Visual Studio, Razor, BuildProviders и Intellisense

Я пытаюсь заставить Intellisense работать на представления бритвы в проекте nonASP.NET и хотел бы понять взаимосвязь между редактором VisualStudio Razor и BuildProviders.

Для фона я пишу фреймворк поверх Manos (моно-веб-сервера), который использует Razor для своего механизма просмотра. У меня эта часть работает отлично, но Intellisense в VS не работает, давая ряд ошибок от неизвестных типов до незарегистрированных поставщиков сборки, в зависимости от того, где размещается выходная DLL проекта.

Мой проект представляет собой библиотеку классов .NET с файлами .cshtml(действие сборки none). Класс базовой бритвы определяется в отдельной сборке (вне проекта), которая может быть зарегистрирована в GAC, но в настоящее время это не так.

Я уже читал эти статьи:

Похоже, мне нужно написать собственный BuildProvider, но не могу найти никакой документации, объясняющей взаимосвязь между поставщиком сборки и бритвой intellisense.

Ответ 1

Razor intellisense в лучшем случае в настоящее время. Однако, если вы используете VS SP1, это немного лучше. Обходное решение web.config(как указано в третьей ссылке) работает для меня в библиотеке классов, пока расширение является cshtml (не пробовал vbhtml, поэтому не могу сказать точно).

Также смотрите здесь: http://razorpad.codeplex.com/ Подобно LinqPad, это позволит вам заранее проверить ваш код бритвы.

Ответ 2

Редактор Razor довольно сильно привязан к среде выполнения ASP.Net, на самом деле он фактически запускает ASP.Net в фоновом режиме для сбора необходимой информации о времени выполнения.

Мое единственное предложение для получения истинной верности IntelliSense - это немного супер-хак. Вместо библиотеки классов вы могли бы сделать свое приложение проектом веб-приложений. WAP на самом деле просто библиотека классов, с которой VS может размещать веб-сайт. если вы очищаете ВСЕ дополнительные материалы (Global.asax, web.config и т.д.), вы можете получить именно то, что ищете. Это обходной путь и немного растягивается, но дайте ему шанс, он может просто работать:)