Компилировать представления в ASP.NET MVC - PullRequest
539 голосов
/ 20 декабря 2008

Я хочу, чтобы задача msbuild компилировала представления, чтобы я мог видеть, есть ли ошибки времени компиляции во время ... компиляции. Есть идеи?

Ответы [ 8 ]

544 голосов
/ 12 февраля 2009

Из документа readme word doc для RC1 (не индексируется Google)

Шаг посткомпиляции компилятора ASP.NET

В настоящее время ошибки в файле представления не обнаруживаются до времени выполнения. Чтобы позволить вам обнаруживать эти ошибки во время компиляции, проекты ASP.NET MVC теперь включают свойство MvcBuildViews, которое по умолчанию отключено. Чтобы включить это свойство, откройте файл проекта и установите для свойства MvcBuildViews значение true, как показано в следующем примере:

<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <MvcBuildViews>true</MvcBuildViews>
  </PropertyGroup>

Примечание Включение этой функции увеличивает время сборки.

Вы можете обновить проекты, созданные в предыдущих выпусках MVC, чтобы включить проверку представлений во время сборки, выполнив следующие действия:

  1. Откройте файл проекта в текстовом редакторе.
  2. Добавьте следующий элемент под самый верхний элемент <PropertyGroup>: <MvcBuildViews>true</MvcBuildViews>
  3. В конце файла проекта раскомментируйте элемент <Target Name="AfterBuild"> и измените его так, чтобы он соответствовал следующему:
<Target Name="AfterBuild" Condition="'$(MvcBuildViews)'=='true'">
    <AspNetCompiler VirtualPath="temp" PhysicalPath="$(ProjectDir)\..\$(ProjectName)" />
</Target>
144 голосов
/ 11 апреля 2013

Честно говоря, я бы порекомендовал пакет RazorGenerator nuget. Таким образом, ваши представления генерируют файл .designer.cs, который создается при их сохранении, и в дополнение к получению ошибок времени компиляции для ваших представлений, они также предварительно компилируются в сборку (= более быстрый прогрев), и Resharper также предоставляет некоторую дополнительную помощь.

Чтобы использовать это, включите пакет Nuget RazorGenerator в ваш проект ASP.NET MVC и установите расширение " Razor Generator " в пункте в разделе Инструменты → Расширения и обновления .

Мы используем это, и издержки на компиляцию с этим подходом намного меньше. Вдобавок ко всему, я бы, вероятно, рекомендовал .NET Demon от RedGate , что еще больше снижает влияние времени компиляции.

Надеюсь, это поможет.

47 голосов
/ 20 декабря 2008

Вы можете использовать aspnet_compiler для этого:

C:\Windows\Microsoft.NET\Framework\v2.0.50727\aspnet_compiler -v /Virtual/Application/Path/Or/Path/In/IIS/Metabase -p C:\Path\To\Your\WebProject -f -errorstack C:\Where\To\Put\Compiled\Site

где " / Virtual / Application / Path / Or / Path / In / IIS / Metabase " выглядит примерно так: " / MyApp " или " / lm / w3svc2 / 1 / корень /"

Также в MSDN есть Задание AspNetCompiler , показывающее, как интегрировать aspnet_compiler с MSBuild:

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <Target Name="PrecompileWeb">
        <AspNetCompiler
            VirtualPath="/MyWebSite"
            PhysicalPath="c:\inetpub\wwwroot\MyWebSite\"
            TargetPath="c:\precompiledweb\MyWebSite\"
            Force="true"
            Debug="true"
        />
    </Target>
</Project>
25 голосов
/ 20 декабря 2008

Кроме того, если вы используете Resharper, вы можете активировать Solution Wide Analysis, и он будет обнаруживать любые ошибки компилятора, которые могут возникнуть в файлах aspx. Это то, что мы делаем ...

11 голосов
/ 20 декабря 2008

В следующем выпуске ASP.NET MVC (будет выпущен в январе или около того) должна быть задача MSBuild, которая компилирует представления, поэтому вам может потребоваться подождать.

См. объявление

6 голосов
/ 17 ноября 2011

Ответ, данный здесь, работает для некоторых версий MVC, но не для других.

Простое решение работало для MVC1, но при обновлении до MVC2 представления больше не компилировались. Это было связано с ошибкой в ​​файлах проекта сайта. Посмотри эту взломанную статью.

Смотрите это: http://haacked.com/archive/2011/05/09/compiling-mvc-views-in-a-build-environment.aspx

4 голосов
/ 03 ноября 2016

Сборка> Выполнить анализ кода

Горячая клавиша: Alt + F11

Помог мне поймать ошибки Razor.

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

Использование расширений Visual Studio Power Tools ( free ) помогает немного . В частности, функция Solution Error Visualizer. При этом ошибки компиляции отмечаются визуально в обозревателе решений (в исходном файле, где обнаружена ошибка). Однако по какой-то причине эта функция не работает так же, как и с другими ошибками в другом месте кода.

В представлениях MVC любые ошибки во время компиляции будут по-прежнему подчеркнуты красным в соответствующих файлах .cs, но сигнализация об этих ошибках не распространяется вверх в обозревателе решений (ни в коем случае, даже в исходном файле, в котором они содержатся) .

Спасибо за BlueClouds за исправление моего предыдущего утверждения.

Я только что сообщил об этом как проблема в проекте расширения github.

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