У меня есть новое решение, которое является приложением ASP.NET MVC 2.0. Я добавил приложение к решению, которое является консольным приложением. Пространство имен консоли - foo, и у него есть репозиторий данных, называемый FooDataRepository, который является публичным классом. У меня также есть открытый класс в пространстве имен foo, называемом FooLinkList, который также является общедоступным.
В приложении ASP.NET, в HomeController, я добавил "using Foo", все компилируется отлично.
Это мой index.aspx, у которого есть проблема. Когда я запускаю приложение, я получаю следующую ошибку:
Описание. Произошла ошибка во время компиляции ресурса, необходимого для обслуживания этого запроса. Ознакомьтесь с приведенными ниже конкретными данными об ошибках и соответствующим образом измените исходный код.
Сообщение об ошибке компилятора: CS0246: Не удалось найти имя типа или имени 'TweetLinkTimer' (вам не хватает директивы using или ссылки на сборку?)
Line 1: <%@ Import Namespace="Foo" %>
Line 2: <%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<IEnumerable<FooLinkList>>" %>
Я добавил ссылку на Foo через Visual Studio и применил директиву "using" в файлах .CS. Я не уверен, что еще мне нужно делать здесь. Foo.exe находится в каталоге bin для моего приложения ASP.NET MVC.
Причина, по которой я это сделал, заключается в том, что я не хочу копировать свой репозиторий данных, который действует как модель для приложения MVC, и этот репозиторий уже создан для консольного приложения. Любые идеи относительно того, что делать?
У меня такое чувство, что это не "правильно", но я могу заставить его работать, выполняя смесь того, что говорит сообщение об исключении, и добавляет директиву Assembly в представление.
<%@ Assembly Name="Foo" %>
<%@ Import Namespace="Foo" %>
<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<IEnumerable<FooLinkList>>" %>
Я могу воспроизвести проблему, и я смотрю на детали, но я думаю, что проблема связана с попыткой ссылаться на консольное приложение как на библиотеку и на результат, который она создает. Интуитивно вы думаете, что это сработает.
Решение 1. Вы можете обойти эту проблему, создав общий тип приложения "Библиотека классов", сохранив там FooDataRepository и FooLinkedList и имея вместо него ссылку на приложение MVC 2 и приложение консоли.