我想添加以下内容:
就我而言,我能够通过以下方式修复它。首先(重要!),我将目标框架更改为 4.6.1,重新加载解决方案,然后使用 NUGET 升级二进制包。
然后,在按照上述解决方案所述解决问题后,我又得到了错误:
配置错误描述:处理服务此请求所需的配置文件期间发生错误。请查看下面的具体错误详细信息并适当地修改您的配置文件。
解析器错误消息:为 system.web.webPages.razor/host 创建配置节处理程序时出错:无法加载文件或程序集 'System.Web.WebPages.Razor,版本 = 2.0.0.0,文化 = 中性,PublicKeyToken = 31bf3856ad364e35' 或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。(来自 HRESULT 的异常:0x80131040)
程序集加载跟踪:以下信息有助于确定为什么无法加载程序集“System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35”。
根的相关部分Web.config
如下所示:
<configSections>
<sectionGroup name="system.web.webPages.razor"
type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup,
System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral,
PublicKeyToken=31BF3856AD364E35">
<section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection,
System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral,
PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
<section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection,
System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral,
PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
</sectionGroup>
将其更改为:
<configSections>
<sectionGroup name="system.web.webPages.razor"
type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup,
System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral,
PublicKeyToken=31BF3856AD364E35" >
<section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection,
System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral,
PublicKeyToken=31BF3856AD364E35" />
<section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection,
System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral,
PublicKeyToken=31BF3856AD364E35" />
</sectionGroup>
</configSections>
它立即起作用。
注意:
我还将每个 System.Web.* 程序集的属性copy local更改为 true。
在某些项目中,部分组sectionGroup name="system.web.webPages.razor"
可能会丢失 - 在这种情况下您需要添加它。
如果您计划升级到 MVC 4,请先升级到 MVC 3,然后再执行最后一步,因为 MVC 4 中有一些重大更改(请参阅此处的详细信息)。