31

mvc 4 でスキャフォールディングされたビューの 1 つを実行しようとすると、次のエラーが発生します。

「/」アプリケーションでサーバー エラーが発生しました。拡張子 '.cshtml' に登録されているビルド プロバイダーはありません。machine.config または web.config のセクションに登録できます。値 'Web' または 'All' を含む BuildProviderAppliesToAttribute 属性があることを確認してください。

私が見つけた唯一の答えはインテリセンスに関連していますが、私のコードは正常に準拠しており、実行時に壊れています。クラス ライブラリを使用していないため、これは奇妙なエラーです。すべてのビューでこのメッセージを表示するコントローラーは 1 つだけで、他のすべてのコントローラー/ビューは正常に動作します。

4

8 に答える 8

65

これで問題は解決しました。

これを変更しますWeb.config

<compilation debug="true" targetFramework="4.5.1" optimizeCompilations="true" />

<compilation debug="true" targetFramework="4.5.1" optimizeCompilations="false" />

追加: 数分後に web.config を古いものに戻しても、問題は繰り返されませんでした。奇妙なこと )

于 2015-08-26T14:35:32.607 に答える
16

Razor コンパイラの警告/エラー - ASP.NET MVC 4の解決策がROOT の web.config に次のコードを追加しても機能しなかった場合

<compilation debug="true" targetFramework="4.0">
  <!-- New -->
  <assemblies>
    <add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <add assembly="System.Web.Helpers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <add assembly="System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <add assembly="System.Web.WebPages, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
  </assemblies>
</compilation>

その後、Visual Studio を再起動してみてください。これは私にとってはうまくいったので、おそらくVisual Studioのバグであることを示唆しています。

于 2014-03-13T10:13:27.243 に答える
3

.Net Framework を現在のバージョン「4.52」から「4.6」に変更することで、この問題を修正しました。これを変更するには、プロジェクトを右クリック -> [プロパティ]、[ターゲット フレームワーク] の順にクリックします。現在のフレームワークを変更した後、再構築すると、すべて正常に動作しました。

この後、現在のフレームワークのバージョンに戻し、現在は機能しています。なぜこれが起こるのか本当にわかりませんが、それは私にとって役に立ちました。

于 2016-04-06T09:08:17.407 に答える
3

同様の問題を修正しました - ここに文書化されています: https://naa4e.codeplex.com/workitem/1

解決策は、参照を削除し、NuGet パッケージを再度追加することでした。

問題は、プロジェクトがもともとローカル マシンのどこかにあると思われる MVC4 を参照していたことです (つまり、NuGet パッケージではありませんでした)。プロジェクト参照を 4 から 5 に適切に上書きしなかったパッケージを単純に「復元」しました。

于 2014-10-09T09:22:47.380 に答える
3

「ソリューションの再構築」をクリックするだけで十分です

于 2015-04-24T08:45:08.597 に答える
1

IIS を再起動し、Temporary Internet Files を削除して、Web 構成ファイルのコンパイル タグを変更してみました。それらのどれも私のために働きません。

System.Web.MVC を削除してプロジェクトに追加することで、問題を修正しました。

于 2016-12-30T04:05:25.280 に答える