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,因此默认情况下它会选择最新版本的 Razor,即使 MVC 3 仅与 Razor v1 兼容。

  • MVC 3 仅与 Razor v1 兼容
  • MVC 4 仅与 Razor v2 兼容

因此,如 MVC4 发行说明中所述,修复方法是将 MVC 3 应用程序的 web.config 文件更改为使用 Razor v1。

所有新项目模板(包括 MVC3)都将正确设置此设置。只有较旧的应用程序没有此设置。

于 2012-09-26T07:11:09.733 回答
0

一般来说,VS2010 之后不支持 Mvc3,我使用 VS2010SP1 顺便说一句。你可以让它工作,但它最终会咬你。所以我建议选择匹配的 VS 和 MVC 版本(检查官方微软网站的匹配)

于 2017-06-02T08:20:39.650 回答
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”或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。

然后,我在这篇文章中看到了另一个关于MVC 3 和 Razor v2 之间可能不兼容的答案。我只是在包管理器控制台中使用以下命令更新了ASP.NET MVC

Update-Package Microsoft.AspNet.Mvc

...一切又开始工作了!

于 2016-06-03T13:21:42.387 回答