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 и т.д.), вы можете получить именно то, что ищете. Это обходной путь и немного растягивается, но дайте ему шанс, он может просто работать:)