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

Мне нужна задача msbuild для компиляции представлений, чтобы я мог видеть, есть ли ошибки компиляции во время... компилирования. Любые идеи?

Ответ 1

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

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

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

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

Ответ 2

Из слова readme word для 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, для включения проверки времени просмотра в режиме сборки, выполнив следующие шаги:

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

Ответ 3

Вы можете использовать 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" или "/лм/w3svc2/1/Root/"

Кроме того, в 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>

Ответ 4

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

Ответ 5

Я не знаю, какой режим просмотра вы используете, но если вы используете Razor, вы можете проверить мой пост в блоге: Скомпилировать asp.net mvc Razor просматривает отдельную dll

Следует также использовать этот код для других просмотров, но еще не сделали и не проверили, что еще

Ответ 6

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

См. анонс

Ответ 7

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

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

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

Ответ 8

Сборкa > Анализ кода выполнения

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

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

Ответ 9

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

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

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

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