问题
我们正在尝试升级到.NET 4.6的ASP.Net 5.2.3项目。
运行时,我们收到错误消息
无法加载文件或程序集&System; Web.Razor,Version = 3.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35'或其中一个依赖项。系统找不到指定的文件。
请注意,我们从NuGet安装了Microsoft.AspNet.Razor版本3.2.3,但错误消息是指版本3.0.0.0。
哈克
现在如果我手动复制
包\ Microsoft.AspNet.Razor.3.2.3 \ lib中\ net45 \ System.Web.Razor.dll
到
TheWebProject \ bin中
项目运行得很好。
GAC
请注意
中有两个条目C:\的Windows \ Microsoft.NET \组件\ GAC_MSIL \ System.Web.Razor
v4.0_1.0.0.0__31bf3856ad364e35
v4.0_2.0.0.0__31bf3856ad364e35
我知道present in the GAC ignore CopyLocal=True的DLL。但是,我不明白为什么该项目无法解析GAC的引用,也不愿意将使用NuGet引用的版本复制到bin文件夹。
的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 =&#34; 3.2.3.0&#34;匹配NuGet包管理器中显示的版本。当我们将这两者都改为
时<bindingRedirect oldVersion="0.0.0.0-3.2.3.0" newVersion="3.2.3.0" />
我们得到的错误略有不同
无法加载文件或程序集System.Web.WebPages.Razor&#39;或其中一个依赖项。定位的程序集的清单定义与程序集引用不匹配。 (HRESULT异常:0x80131040)
问题
如何设置项目引用来解决此问题?
答案 0 :(得分:0)
尝试右键单击参考列表中的参考并设置&#34;复制本地&#34; to&#34; True&#34;。
答案 1 :(得分:0)
我怀疑,您的配置强制它为3.0.0.0。试试这个:
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Web.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
<bindingRedirect oldVersion="3.0.0.0" newVersion="3.2.3.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
答案 2 :(得分:0)
您需要将程序集重定向添加到* .config文件中。打开包管理器控制台并输入以下命令:Add-BindingRedirect [-ProjectName]
参考:http://weblog.west-wind.com/posts/2014/Nov/29/Updating-Assembly-Redirects-with-NuGet和https://docs.nuget.org/consume/package-manager-console-powershell-reference