我想补充以下内容:
在我的情况下,我通过以下方式解决了问题。首先(重要!),我将目标框架更改为4.6.1,重新加载了解决方案,然后使用NUGET升级了二进制包。
然后,在按照上述解决方案描述修复问题后,我还遇到了以下错误:
配置错误
说明:处理所需的配置文件时发生错误以服务此请求。请查看下面的具体错误详细信息并相应地修改您的配置文件。
解析器错误消息:创建系统.web.webPages.razor/host配置节处理程序时出错:无法加载文件或程序集“System.Web.WebPages.Razor,Version=2.0.0.0,Culture=neutral,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.*程序集的属性复制本地更改为true。
在某些项目中,部分组sectionGroup name="system.web.webPages.razor"
可能也会丢失 - 在这种情况下,您需要添加它。
如果您计划升级到MVC 4,请先升级到MVC 3,然后再进行最后一步操作,因为MVC 4中有一些破坏性变化(详见此处)。