Можно ли составить Razor? - PullRequest
46 голосов
/ 31 марта 2011

Мне было интересно, можно ли скомпилировать представления Razor, например представления на основе WebForm?

Имеет ли смысл даже компилировать представления Razor и зачем кому-то это нужно?

Ответы [ 4 ]

56 голосов
/ 01 апреля 2011

Edit:

Вот также запись в блоге на эту тему:

Как обнаружить ошибки наших представлений ASP.NET MVC во время компиляции

Чтобы компилировать ваши представления, выполните следующее;

  1. Выгрузите ваш проект по праву щелкнув проект по решению Исследователь в VS и нажав выгрузить Проект
  2. щелкните правой кнопкой мыши проект, который имеет был преобразован в недоступный проект и нажмите «Изменить» your_project_name.csproj "(это будет .vbproj, если ваш проект VB проект)
  3. см. Следующий код;

    <!--There some lines of code here and I deleted them to get to the point quickly-->
    
    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
    <MvcBuildViews>false</MvcBuildViews>
    

  4. изменить значение тега MvcBuildViews с false на true

  5. после этого сохраните его и перезагрузите проект.

после того, как вы построите свое решение для его компиляции, вы увидите, что ваше представление также будет скомпилировано.

ПРИМЕЧАНИЕ: чтобы протестировать его, нарочно сломайте какой-нибудь код в одном из ваших представлений и попробуйте собрать. вы увидите, что получите сообщение об ошибке.

32 голосов
/ 20 ноября 2013

Проверка MvcBuildViews превосходна, но она добавляет 5-10 секунд штрафа за создание веб-приложения, если оно достаточно сложное. Он не кэширует выходные данные компиляции, поэтому каждый раз выполняет полную компиляцию всех ваших представлений.

Я нашел хороший компромисс, следуя совету выше и добавив атрибут Condition:

<MvcBuildViews Condition=" '$(Configuration)' == 'Release' ">true</MvcBuildViews>

Мы ожидаем, что ReSharper в любом случае будет отмечать любые ошибки в представлениях, и разработчик всегда может встроить конфигурацию выпуска в качестве теста - у нас есть сценарий «preflight», который запускают разработчики, чтобы они могли легко удостовериться, что целевой пакет работать и так далее - и если все, что не удается, сервер сборки будет ловить его.

Возможно, этот трюк очевиден, но я только начал изучать msbuild должным образом, а не писать сценарии Powershell для этих задач. Надеюсь, это кому-нибудь пригодится.

24 голосов
/ 31 марта 2011

Да, вы можете. Взгляните на следующий пост: Скомпилируйте ваши Razor asp.net mvc в отдельную DLL

Это "пошаговое" руководство о том, как скомпилировать ваши бритвенные виды в отдельную DLL. Я не знаю, если это то, что вы хотите сделать, но это определенно приведет вас в правильном направлении.

1 голос
/ 31 марта 2011

Да, это возможно. На самом деле, лучший пример, который я могу придумать, - это шаблонизаторы электронной почты. Если вы скомпилируете и кешируете шаблон, то вы сможете быстро срывать электронные письма без необходимости повторного анализа.

Это хороший пример использования Razor вне MVC.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...