web-dev-qa-db-ja.com

ASP.NET MVCでビューをコンパイルする

Msbuildタスクでビューをコンパイルして、コンパイル時エラーが発生していないかどうか確認できるようにしたいのですが…コンパイル時。何か案は?

539
John Oxley

私は率直に言ってRazorGeneratornugetパッケージをお勧めします。これにより、ビューを保存するときに.designer.csファイルが生成され、ビューのコンパイル時エラーが発生するだけでなく、それらもアセンブリにプリコンパイルされ(=ウォームアップが速く)、Resharperは追加のヘルプも提供します。

これを使用するには、ASP.NET MVCプロジェクトにRazorGeneratornugetパッケージを含め、 "Razor Generatorをインストールします "[ツール]→[機能拡張と更新]の項目の下の拡張子。

私たちはこれを使用しており、このアプローチでのコンパイルあたりのオーバーヘッドはずっと少なくなっています。これに加えて、おそらく.NET Demon by RedGateをお勧めします。

お役に立てれば。

144
Mirko

RC1用のReadme Word文書から(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>
544
JarrettV

これには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

"/仮想/アプリケーション/パス/または/パス/ In/IIS /メタベース"は次のようになります。 "/ MyApp "または"/ lm/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>
47
maxnk

また、Resharperを使用すると、Solution Wide Analysisをアクティブにすることができ、aspxファイルに含まれる可能性のあるコンパイラエラーを検出します。それが私たちがすることです...

25
bh213

ASP.NET MVCの次のリリース(1月かそこらで利用可能)には、ビューをコンパイルするMSBuildタスクがあるはずですので、しばらくお待ちください。

発表 を参照してください

11
bh213

ここで与えられた答えはいくつかのMVCバージョンのために働くが他のためには働かない。

単純な解決策はMVC1には有効でしたが、MVC2にアップグレードする際にビューがコンパイルされなくなりました。これはウェブサイトのプロジェクトファイルのバグによるものです。 Haackedの記事を見てください。

これを参照してください。 http://haacked.com/archive/2011/05/09/compiling-mvc-views-in-a-build-environment.aspx

6
user1040323

ビルド>コード分析の実行

ホットキー: Alt+F11

かみそりのエラーをキャッチするのに役立ちました。

4
Abu Abdullah

Visual Studioの Productivity Power Toolsfree)拡張子を使用するは少し助けになります。特にSolution Error Visualizer機能。それを使用すると、コンパイルエラーがソリューションエクスプローラ(エラーが検出されたソースファイル)に視覚的にマークされます。ただし、何らかの理由で、この機能はコード内の他の場所の他のエラーと同様には機能しません。

MVCビューでは、コンパイル時のエラーはそれぞれの.csファイルで赤で下線が引かれますが、ソリューションエクスプローラでこれらのエラーを通知することは上方向には伝播されません(含まれているソースファイルでさえも)。

前の文を修正してくれてBlueCloudsに感謝します。

これを拡張機能のgithubプロジェクトの issue として報告したところです。

1
Veverke