C# System.Web.Razor.dll未复制到bin文件夹
问题 我们有一个ASP.NET5.2.3项目,正在尝试升级到.NET4.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 到 Web项目\bin 这个项目运行得很好 GAC 请注意,中有两个条目 C:\Windows\Microsoft.NET\assembly\GAC\U MSIL\System.Web.Razor v4.0_1.0.0.0_31bf3856ad364e35 v4.0_2.0.0.0_31bf3856ad364e35 我知道那些DLL是。但是,我不明白为什么项目既无法解析来自GAC的引用,又不愿意将使用NuGet引用的版本复制到bin文件夹 web.config 我们在web.config中有以下绑定重定向,它们可能是由NuGet安装程序放在那里的C# System.Web.Razor.dll未复制到bin文件夹,c#,.net,asp.net-mvc,asp.net-mvc-5,C#,.net,Asp.net Mvc,Asp.net Mvc 5,问题 我们有一个ASP.NET5.2.3项目,正在尝试升级到.NET4.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\
<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的异常:0x8013100)
问题
如何设置项目引用以解决此问题?尝试右键单击引用列表中的引用,并将“Copy Local”设置为“True”。正如我所怀疑的,您的配置正在将其强制设置为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>
您需要将程序集重定向添加到*.config文件中。打开软件包管理器控制台并输入以下命令:
addbindingRedirect[-ProjectName]
参考资料:和您的web.config中是否有3.0.0.0程序集的参考资料?@mjw:是的,用细节更新了问题。您是否了解了问题的真相?我们已经尝试过了。我更新了问题以使其更清楚,并显示了我们得到的错误。这是一个很酷的命令,我不知道。但是,在运行它之后,它对绑定重定向进行了与我们手动尝试的相同的更改(将其更新为3.2.3)。是否有一个独立的依赖程序集已针对较旧版本的System.Web.Razor进行编译?这正是我们第一次开始深入研究时团队成员所说的:-)
是否有一个独立的依赖程序集
我们对此进行了仔细检查,但考虑得很好。