web-dev-qa-db-ja.com

かみそりビューはコンパイル時エラーを与えていません

VS 2012 Professionalを最近インストールしました。

MVC4 Webプロジェクトをビルドしようとすると。 「ビルド」または「再ビルド」を行うと、カミソリビューでエラーが認識されません。


プロジェクトからネームスペースを削除しました/または名前を変更しました。ソリューションを構築すると、すべてのcsファイルでエラーが発生しましたが、名前空間を変更することで修正しました。ソリューション全体が正常にビルドされます。プロジェクトを実行すると、古いネームスペースがまだ一部のビュー(* .cshtmlファイル)で参照されているため、ネームスペースが見つからないというCompilation Errorが表示されました。

予想されるソリューション
「ビルド」または「再ビルド」を行うと、このようなエラーが認識され、他のエラーと一緒に表示されます。

これはVS 2010で正常に機能していましたが、設定がありませんか?

前もって感謝します !!アミット

Edit自分で答えを見つけました。質問を投稿するのは早いと思います。

コンパイルすべきではないときにコンパイルするエラーのあるレイザー構文

別の問題

.csprojectファイルで値をTrueに変更した後、プロジェクトのビルドを開始するとエラーが表示されますが、一度に1つのエラーしか表示されません。たとえば、合計3回のビューで5つのエラーがあります。エラーが1つだけ表示されます。 5つのエラーをすべて表示する解決策はありますか?

48
Amit Andharia

MVC4 Webプロジェクトをビルドしようとすると。 「ビルド」または「再ビルド」を行うと、カミソリビューでエラーが認識されません。

普通のようです。 Razorビューは、ASP.NETランタイムによって動的にコンパイルされます。コンパイル時にビューを構築したい場合は、次のオプションを.csprojファイル:

<PropertyGroup>
    <MvcBuildViews>true</MvcBuildViews>
</PropertyGroup>

詳細については この記事 をご覧ください。

72
Darin Dimitrov

MmvcBuildViewsタグをRelease PropertyGroupタグの子として追加することをお勧めします。これにより、リリースモードでコンパイルするとき(またはリリースモードで発行するとき)にのみビューがコンパイルされます。これにより、デバッグ中のアプリが高速になります。また、デプロイする前(リリースモードでビルドする場合)にコンパイル時のチェックを取得します。要約すると、両方の長所を活用できます。

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
    <MvcBuildViews>true</MvcBuildViews>
  </PropertyGroup>
20

私の経験によると、上記の真の設定に加えて、csprojファイルに以下の設定が存在することを確認する必要があります。

<Target Name="MvcBuildViews" AfterTargets="AfterBuild" Condition="'$(MvcBuildViews)'=='true'">
<AspNetCompiler VirtualPath="temp" PhysicalPath="$(WebProjectOutputDir)" />
</Target>
16
karl li

デフォルトでは、ビューをコンパイルしません。この機能を有効にできますが、ビルド時間が長くなることに注意してください。

次の手順に従って、ビューのコンパイルを有効にできます。

  • プロジェクトをアンロード
  • プロジェクトファイルを開く
  • <MvcBuildViews>false</MvcBuildViews>そしてtrueを持つように変更します
  • プロジェクトファイルを閉じてプロジェクトをリロードする
12
Dmitry

その非常にシンプルな答えは、次の手順を実行します。

プロジェクトをアンロード

プロジェクトを編集

検索より:

<Target Name="MvcBuildViews" AfterTargets="AfterBuild" Condition="'$(MvcBuildViews)'=='true'">
  <AspNetCompiler VirtualPath="temp" PhysicalPath="$(WebProjectOutputDir)" />
</Target>

以下に追加

<Target Name="AfterBuild" Condition="'$(Configuration)'!='Debug'">
  <RemoveDir Directories="$(BaseIntermediateOutputPath)" />
</Target>

それはプロジェクトをアンロードするだけです。構築する

そして、Ur構文が正しく動作することを確認してください。

確信してます。

1
vishal joshi