Компиляция представлений в ASP.NET MVC
Я хочу создать задачу msbuild для компиляции представлений, чтобы иметь возможность видеть ошибки компиляции именно на этапе компиляции. Есть идеи, как это реализовать?
5 ответ(ов)
Чтобы включить проверку ошибок в представлениях вашего проекта ASP.NET MVC на этапе компиляции, вам нужно настроить свой проект, изменив файл проекта. По умолчанию эта функция отключена, и ошибки в файлах представлений обнаруживаются только во время выполнения.
Для включения свойств MvcBuildViews, выполните следующие действия:
- Откройте файл проекта в текстовом редакторе.
- Добавьте следующий элемент под верхним
<PropertyGroup>
:
<MvcBuildViews>true</MvcBuildViews>
Таким образом, ваш файл проекта будет выглядеть примерно так:
<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<MvcBuildViews>true</MvcBuildViews>
</PropertyGroup>
</Project>
- В конце файла проекта раскомментируйте элемент
<Target Name="AfterBuild">
и измените его, чтобы он соответствовал следующему:
<Target Name="AfterBuild" Condition="'$(MvcBuildViews)'=='true'">
<AspNetCompiler VirtualPath="temp" PhysicalPath="$(ProjectDir)\..\$(ProjectName)" />
</Target>
Обратите внимание, что включение этой функции добавляет некоторую нагрузку на время сборки.
Эти шаги позволят вам обновить проекты, созданные с предыдущими версиями MVC, для включения валидации представлений на этапе сборки.
Я бы рекомендовал использовать пакет NuGet RazorGenerator. При его использовании ваши представления будут иметь сгенерированный файл .designer.cs
сразу после сохранения, что не только позволяет ловить ошибки компиляции для ваших представлений, но и предотвращает их компиляцию в сборку (= более быстрый старт приложения), а также Resharper предоставляет дополнительную помощь.
Чтобы начать, добавьте пакет RazorGenerator в ваш проект ASP.NET MVC и установите расширение "Razor Generator" в разделе Инструменты → Расширения и обновления.
Мы используем этот подход, и накладные расходы на компиляцию существенно меньше. Кроме того, я бы также порекомендовал использовать .NET Demon от RedGate, который еще больше снижает влияние времени компиляции.
Если вы используете ReSharper, вы можете активировать анализ на уровне решения (Solution Wide Analysis), и он обнаружит любые ошибки компиляции, которые могут быть в файлах aspx. Именно так мы и делаем...
Ответ, указанный здесь, работает для некоторых версий MVC, но не для всех.
Простое решение сработало для MVC1, но при обновлении до MVC2 представления больше не компилировались. Это было связано с ошибкой в файлах проекта веб-сайта. См. эту статью от Haacked.
Ссылка: http://haacked.com/archive/2011/05/09/compiling-mvc-views-in-a-build-environment.aspx
Вам нужно выполнить анализ кода, выбрав пункт меню "Build" и затем "Run Code Analysis". Можно также воспользоваться горячими клавишами. Это очень полезный инструмент, который помогает выявить ошибки Razor в вашем коде.
Обнаружено потенциально опасное значение Request.Form, полученное от клиента
ASP.NET MVC - Установка пользовательского IIdentity или IPrincipal
Экранирование символа @ в Razor View Engine
Добавление подпапки в папку "View/Shared" в ASP.Net MVC и вызов представления
ASP MVC: Cookies не сохраняются