5

Компиляция представлений в ASP.NET MVC

28

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

5 ответ(ов)

5

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

Для включения свойств MvcBuildViews, выполните следующие действия:

  1. Откройте файл проекта в текстовом редакторе.
  2. Добавьте следующий элемент под верхним <PropertyGroup>:
<MvcBuildViews>true</MvcBuildViews>

Таким образом, ваш файл проекта будет выглядеть примерно так:

<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <MvcBuildViews>true</MvcBuildViews>
  </PropertyGroup>
</Project>
  1. В конце файла проекта раскомментируйте элемент <Target Name="AfterBuild"> и измените его, чтобы он соответствовал следующему:
<Target Name="AfterBuild" Condition="'$(MvcBuildViews)'=='true'">
    <AspNetCompiler VirtualPath="temp" PhysicalPath="$(ProjectDir)\..\$(ProjectName)" />
</Target>

Обратите внимание, что включение этой функции добавляет некоторую нагрузку на время сборки.

Эти шаги позволят вам обновить проекты, созданные с предыдущими версиями MVC, для включения валидации представлений на этапе сборки.

1

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

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

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

0

Если вы используете ReSharper, вы можете активировать анализ на уровне решения (Solution Wide Analysis), и он обнаружит любые ошибки компиляции, которые могут быть в файлах aspx. Именно так мы и делаем...

0

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

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

Ссылка: http://haacked.com/archive/2011/05/09/compiling-mvc-views-in-a-build-environment.aspx

0

Вам нужно выполнить анализ кода, выбрав пункт меню "Build" и затем "Run Code Analysis". Можно также воспользоваться горячими клавишами. Это очень полезный инструмент, который помогает выявить ошибки Razor в вашем коде.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь