Сообщение об ошибке компилятора: CS0246 в приложении ASP.NET MVC

2

У меня есть новое решение, которое является приложением 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, и этот репозиторий уже создан для консольного приложения. Любые идеи относительно того, что делать?

  • 0
    В ошибке упоминается TweetLinkTimer. Это то же самое, что FooLinkList в вашем примере кода?
Теги:
asp.net-mvc
visual-studio-2008

2 ответа

1
Лучший ответ

У меня такое чувство, что это не "правильно", но я могу заставить его работать, выполняя смесь того, что говорит сообщение об исключении, и добавляет директиву Assembly в представление.

<%@ Assembly Name="Foo" %>
<%@ Import Namespace="Foo" %>
<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<IEnumerable<FooLinkList>>" %>
  • 0
    Очевидно, мне не нужна директива Import с директивой Assembly.
0

Я могу воспроизвести проблему, и я смотрю на детали, но я думаю, что проблема связана с попыткой ссылаться на консольное приложение как на библиотеку и на результат, который она создает. Интуитивно вы думаете, что это сработает.

Решение 1. Вы можете обойти эту проблему, создав общий тип приложения "Библиотека классов", сохранив там FooDataRepository и FooLinkedList и имея вместо него ссылку на приложение MVC 2 и приложение консоли.

  • 1
    Я думаю, что решение 1 является единственным работоспособным. Решение 2 требует, чтобы мое консольное приложение было DLL, а это не так. Это EXE, потому что мне нужно, чтобы он работал в фоновом режиме и занимался чем-то другим.
  • 0
    Я удалил Решение 2, потому что только я создавал ложный положительный результат.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню