问题:
我们有一个ASP.Net 5.2.3项目,我们正在尝试将其升级到.NET 4.6。
运行时,我们收到以下错误消息:
“无法加载文件或程序集'System.Web.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'或其某个依赖项。系统找不到指定的文件。”
请注意,我们从NuGet安装了Microsoft.AspNet.Razor版本3.2.3,但错误消息引用了版本3.0.0.0。
解决方法:
现在,如果我手动复制...
我们还尝试将newVersion设置为“3.2.3.0”,以匹配NuGet包管理器中显示的版本。当我们将两者都更改为时:
我们遇到了稍微不同的错误:
“无法加载文件或程序集'System.Web.WebPages.Razor'或其某个依赖项。所定位的程序集清单定义与程序集引用不匹配。(HRESULT 异常:0x80131040)”
问题:
应该如何设置项目引用以解决此问题?
我们有一个ASP.Net 5.2.3项目,我们正在尝试将其升级到.NET 4.6。
运行时,我们收到以下错误消息:
“无法加载文件或程序集'System.Web.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'或其某个依赖项。系统找不到指定的文件。”
请注意,我们从NuGet安装了Microsoft.AspNet.Razor版本3.2.3,但错误消息引用了版本3.0.0.0。
解决方法:
现在,如果我手动复制...
packages\Microsoft.AspNet.Razor.3.2.3\lib\net45\System.Web.Razor.dll
到
TheWebProject\bin
该项目运行得很好。
GAC
请注意,有两个条目在
我知道存在于GAC中的DLL会忽略CopyLocal=True。不过,我不明白为什么该项目既无法从GAC解决引用,也不愿意将使用NuGet引用的版本复制到bin文件夹中。C:\Windows\Microsoft.NET\assembly\GAC_MSIL\System.Web.Razor
v4.0_1.0.0.0__31bf3856ad364e35
v4.0_2.0.0.0__31bf3856ad364e35
web.config
我们在web.config中有以下绑定重定向,这些重定向可能是由NuGet安装程序放置的。 <dependentAssembly>
<assemblyIdentity name="System.Web.WebPages.Razor" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.Razor" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
</dependentAssembly>
我们还尝试将newVersion设置为“3.2.3.0”,以匹配NuGet包管理器中显示的版本。当我们将两者都更改为时:
<bindingRedirect oldVersion="0.0.0.0-3.2.3.0" newVersion="3.2.3.0" />
我们遇到了稍微不同的错误:
“无法加载文件或程序集'System.Web.WebPages.Razor'或其某个依赖项。所定位的程序集清单定义与程序集引用不匹配。(HRESULT 异常:0x80131040)”
问题:
应该如何设置项目引用以解决此问题?