15

VS2012 をインストールして MVC 4 をインストールした後、MVC3 アプリケーションが次のランタイム エラーで失敗するようになりました。

メソッドが見つかりません: 'System.Collections.Generic.Dictionary`2 System.Web.Razor.Parser.CSharpCodeParser.get_RazorKeywords()'.

VS2010 で新しい ASP.NET MVC 3 プロジェクトを作成すると、カミソリ ビューで問題なく動作します。他の誰かが同様の問題を経験しましたか?

4

4 に答える 4

26

@Levi プロジェクトのルートにある Web.config にありました。

私のweb.configで、コメントアウトしたこのブロックに気づきましたが、このエラーはもう発生しません:

<dependentAssembly> 
    <assemblyIdentity name="System.Web.Razor" publicKeyToken="31bf3856ad364e35"   
                      culture="neutral" /> 
    <bindingRedirect oldVersion="0.0.0.0-2.0.0.0" newVersion="2.0.0.0" /> 
</dependentAssembly> 
于 2012-08-22T18:28:54.283 に答える
9

これは文書化された動作です。VS2012 は MVC4 をインストールします。リンクhttp://www.asp.net/whitepapers/mvc4-release-notes#_Toc303253815から「ASP.NET MVC 4 をインストールすると ASP.NET MVC 3 RTM アプリケーションが壊れる」セクションをお読みください 。

このエラーの具体的な原因は、ASP.NET MVC 3 のプロジェクト テンプレートで、使用する Razor のバージョンが指定されていなかったため、MVC 3 が Razor v1 とのみ互換性があるにもかかわらず、既定で Razor の最新バージョンが選択されることです。

  • MVC 3 は Razor v1 のみと互換性があります
  • MVC 4 は Razor v2 のみと互換性があります

そのため、MVC4 リリース ノートに記載されている修正方法は、MVC 3 アプリの web.config ファイルを Razor v1 を使用するように変更することです。

すべての新しいプロジェクト テンプレート (MVC3 を含む) では、これが正しく設定されます。この設定がないのは、古いアプリのみです。

于 2012-09-26T07:11:09.733 に答える
0

Visual Studio 2015 でMVC 3を使用して古いプロジェクトに取り組んでいました。

何らかの理由で、Razor v2がインストールされ、OP で説明されているエラーが発生しました。

メソッドが見つかりません: 'System.Collections.Generic.Dictionary`2 System.Web.Razor.Parser.CSharpCodeParser.get_RazorKeywords()'.

最初に、私はOP の答えを試してみましたWeb.Config。しかし、それはこのエラーを作成しました:

ファイルまたはアセンブリ 'System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' またはその依存関係の 1 つを読み込めませんでした。見つかったアセンブリのマニフェスト定義がアセンブリ参照と一致しません。

次に、この投稿で、MVC 3 と Razor v2 の間の非互換性の可能性に関する別の回答を見ました。Package Manager Consoleで次のコマンドを使用して、ASP.NET MVCを単純に更新しました。

Update-Package Microsoft.AspNet.Mvc

...そして、すべてが再び機能し始めました!

于 2016-06-03T13:21:42.387 に答える