2010-02-17 2 views
2

Я искал темы в Stackoverflow, но на этот вопрос пока не ответил.ASP.NET MVC 2 - Виды в отдельной сборке - Нет intellisense

У меня есть два проекта в моем решении: a) Применение MVC b) Библиотека классов.

Библиотека классов действует как плагин, поэтому он содержит представления. Основная проблема заключается в том, что У меня нет intellisense в разметке представления для моих классов, содержащихся в библиотеке классов (та же сборка, что и представления).

В начале я даже не мог написать <% = Html.RenderAction ...%>. Я решил, что при добавлении файла Web.config в библиотеку классов со следующей секции:

<configuration> 
<system.web> 
    <compilation debug="true"> 
     <assemblies> 
      <add assembly="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/> 
      <add assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
      <add assembly="System.Web.Abstractions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
      <add assembly="System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
      <add assembly="System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
      <add assembly="System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/> 
      <add assembly="System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/> 
      <add assembly="System.Data.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/> 
     </assemblies> 
    </compilation> 
</system.web> 

Теперь он признает Html.RenderAction и т.д. в разметке представления. Однако я не имею ни малейшего представления о том, как получить доступ (с IntelliSense) для моих классов, содержащихся в той же сборке также мнения :(

Уважения, Jakub

ответ

2

Существует отдельный список пространств имен в конфигурации где вам нужно указать свои собственные пространства имен. Пример, приведенный ниже, демонстрирует упрощенное web.config, что вы добавляете свои пространства имен. Если это все еще не работает, убедитесь, что ваш проект и webconfig имеют правильные ссылки на другую сборку.

<configuration> 
    <pages> 
     <namespaces> 
      <add namespace="System.Web.Mvc"/> 
      <add namespace="System.Web.Mvc.Ajax"/> 
      <add namespace="System.Web.Mvc.Html"/> 
      <add namespace="System.Web.Routing"/> 
      <add namespace="System.Linq"/> 
      <add namespace="System.Collections.Generic"/> 
      <add namespace="Blog.Models"/> <!-- These are my custom namepaces --> 
      <add namespace="Blog.Views"/> 
     </namespaces> 
    </pages> 
</configuration> 
+0

Спасибо за ответ smaclell. Я пробовал это уже, но щелчок правой кнопкой мыши по имени класса не работает (там нет пространства имен разрешений). – Cosmo

+0

Не беспокойтесь. Я лично не пробовал, что вы делаете, но я определенно могу понять, почему вы хотите разделить свои сборки. Интересно, что вы все еще не можете видеть классы даже с выстроенными ассемблиями и пространствами имен в web.config. Удачи. – smaclell

-1

Извне, MVC не поддерживает несколько проектов. мои предыдущие вопросы для более подробной информации.

+0

Я знаю, но мне это удалось с помощью MEF, и он работает отлично. Единственная проблема - intellisense для моих собственных классов в сборке библиотеки классов. Я мог бы сделать это без intellisense, но это не приятно. – Cosmo

+0

Спасибо за downvote. –

0

Spark viewengine как та же проблема, см. their documentation. В основном они говорят «создайте проект веб-приложения» и рассматривайте его как библиотеку классов любым другим способом. Работал для меня в Спарке, может, он тоже будет работать в вашей ситуации?

+0

Привет, Erik, это был бы вариант, однако я хотел бы заставить его работать в проекте библиотеки классов :) – Cosmo

+1

AFAIK Единственная реальная разница между проектом веб-приложения и библиотекой классов - это GUID для типа проекта (который Visual Studio использует для определения, какой контекст загружается). Исправьте меня, если я ошибаюсь, но не должно быть никаких негативных побочных эффектов. Если есть, я их еще не встречал ;-) –