无法加载文件或程序集“WebGrease”之一的依赖项。 定位的程序集的清单定义与程序集引用不匹配

这个问题有很多解决方案,请阅读下面的所有答案,它们也可以帮助您解决问题。 如果您找到解决此问题的新方法,请在答案中记录

我试图将System.Web.Optimization添加到我的ASP.NET Web窗体解决方案。 我通过NuGet包添加了Microsoft ASP.NET Web Optimization Framework。 它将Microsoft.Web.Infrastracture和WebGrease(1.5.2)添加到引用中。

但是,当我跑

 

我得到运行时错误

 Could not load file or assembly 'WebGrease, Version=1.5.1.25624, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040) 

我已经尝试将assemblyBinding添加到Web.Config

          

但没有任何运气。

我注意到我的WebSite的Web配置包含这一行

   

如果我用它替换它

   

然后一切正常,我没有得到运行时错误。 不幸的是,我需要xmlns。 我项目的其他组件依赖于它。

为什么优化会在架构指向v2.0时尝试加载旧版本? 有没有办法强制它加载最新或唯一可用的WebGrease.dll?

如果不改变,我还能尝试什么

   ? 

感谢您提供任何帮助!

编辑:1)附加FusionLog结果。 也许它会有所帮助

 === Pre-bind state information === LOG: User = [USER] LOG: DisplayName = WebGrease, Version=1.5.1.25624, Culture=neutral, PublicKeyToken=31bf3856ad364e35 (Fully-specified) LOG: Appbase = file:///C:/Projects/PROJECT_NAME/trunk/www.PROJECT_NAME.com/ LOG: Initial PrivatePath = C:\Projects\PROJECT_NAME\trunk\www.PROJECT_NAME.com\bin Calling assembly : System.Web.Optimization, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35. === LOG: This bind starts in default load context. LOG: Using application configuration file: C:\Projects\PROJECT_NAME\trunk\www.PROJECT_NAME.com\web.config LOG: Using host configuration file: LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config. LOG: Post-policy reference: WebGrease, Version=1.5.1.25624, Culture=neutral, PublicKeyToken=31bf3856ad364e35 

2)确认,问题在于

  

但是,我不明白为什么

我在prod服务器上遇到了这个问题,而在开发者机器上一切正常。 这些行帮助:

           

最后,问题出在 。 它导致Render方法加载错误的WebGrease程序集。

删除xmlns解决了我的问题。

我修改了我的web.config文件,以便newVersion =“1.0.0.0”与我的Referenced文件版本匹配:

     

为了防止任何人,我有同样的问题,但发现它是由WebGrease的依赖程序集引起的,即Antlr3 。 通过NuGet安装runtime它已将以下内容添加到web.config runtime元素:

      

简单地删除这个修复我的问题。

就我而言,问题在我的web.config文件中被certificate是一个XML处理指令(PI) ( )。 完全合法的XML! 但它导致出现此错误消息,让我看到所有错误的地方。

我的web.config看起来类似于以下内容 – 请注意connectionStrings部分中的XML PI:

  ...    ...  ...   ...     ...   ...  

请注意,XML PI 位于connectionStrings部分 – 即,无法在assemblyBinding部分附近,或者WebGrease等的bindingRedirect条目(这是正确的!)。

通过键入添加System.Web.Optimization NuGet包

Install-Package Microsoft.AspNet.Web.Optimization

在Nuget Package Manager控制台中。 这应解决依赖关系并让VS加载正确的WebGrease程序集。

我遇到了同样的问题,但这是将解决方案从我的本地开发计算机复制到我们存储项目的网络驱动器的结果。 当我从映射驱动器打开解决方案时,我无法使引用正常工作,并且我一直收到此错误。 我找到的特定问题的临时解决方法是从其UNC路径而不是映射的驱动器号中打开解决方案。

在Web表单站点.net 4.5中遇到了同样的问题。简单更新nuget包到上一版本对我有帮助。