无法加载文件或程序集“WebGrease,Version = 1.5.1.25624,Culture = neutral,PublicKeyToken = 31bf3856ad364e35”或其某个依赖关系

我有一个MVC4 Web api项目。 当运行服务项目时,我得到一个错误

无法加载文件或程序集“WebGrease,Version = 1.5.1.25624,Culture = neutral,PublicKeyToken = 31bf3856ad364e35”或其某个依赖项。 该系统找不到指定的文件。

我已经添加了WebGrease.dll文件,并仍然出现错误

并尝试改变web.config

<bindingRedirect oldVersion="0.0.0.0-1.3.0.0"/>" 

 <bindingRedirect oldVersion="0.0.0.0-1.5.2.14234" newVersion="1.5.2.14234" /> 

请咨询我缺less的东西。

你尝试过NuGet吗?

 Install-Package WebGrease -Version 1.5.1 

要么

 Install-Package WebGrease -Version 1.5.2 

我知道这是OP晚了,但我遇到了同样的问题,而试用Bootstrap 3的MVC 4 NuGet包,在我的情况下,它与微软 .AspNet.Web.Optimization包有关,并设法找一个简单的解决scheme

尝试在包pipe理器控制台中执行以下命令:

 Install-Package Microsoft.AspNet.Web.Optimization Update-Package WebGrease Uninstall-Package Microsoft.AspNet.Web.Optimization Uninstall-Package WebGrease Install-Package Microsoft.AspNet.Web.Optimization Update-Package WebGrease 

前两行对我没有任何影响,因为这些包已经由Bootstrap 3 for MVC 4软件包安装和更新了,但是我仍然运行它们,然后编译和运行。

这个错误是因为Microsoft.AspNet.Web.Optimization 1.1.3内部引用了WebGrease 1.5.1.25624 ,尽pipeNuget包本身依赖于WebGrease 1.5.2.14234 。 有人在创buildNuget包时显然搞砸了。

为了解决这个问题,在你的Web.Config添加这个程序集绑定。

  <dependentAssembly> <assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-1.5.1.25624" newVersion="1.5.2.14234" /> </dependentAssembly> 

对我而言,上述情况都没有奏效。

试了两天后,终于find了解决办法。

我所做的是,我卸载了Microsoft.AspNet.Web.OptimizationWebGrease两者。

我知道这个优化程序集内部是指WebGrease 1.5.1。 所以我select了一个不涉及WebGrease 1.5.1的优化版本。

我跑了以下的命令,以使一切工作。

 Uninstall-Package Microsoft.AspNet.Web.Optimization Uninstall-Package WebGrease Install-Package Microsoft.AspNet.Web.Optimization -Version 1.1.0 

我希望我能为上面的解决scheme无效的人提供很好的帮助。

干杯!

我观察到的问题与Jidheesh Rajan提到的密切相符。 但是,从Nuget包pipe理器更新包(不指定版本)并没有解决问题。 这是我必须做的解决这个问题。 (本质上,我明白更新WebGrease到版本1.6)

从Visual Studio的包pipe理器控制台中,显式更新WebGrease到版本1.6。 这里是命令。

 Install-Package WebGrease -Version 1.6 

输出应该是

 Removing 'WebGrease 1.5.2' from {project name} 

添加'WebGrease 1.6.0'到{project name}成功添加'WebGrease 1.6.0'到{project name}卸载'WebGrease 1.5.2'。 成功卸载“WebGrease 1.5.2”。

这最终更新web.config

  assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" culture="neutral" / bindingRedirect oldVersion="0.0.0.0-1.6.5135.21930" newVersion="1.6.5135.21930" 

这也导致从csproj文件中删除一行。

 <WebGreaseLibPath>..\packages\WebGrease.1.5.2\lib</WebGreaseLibPath> 

并在csproj文件中的此节点中更新

 <Reference Include="WebGrease, Version=1.5.2.14234, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> <HintPath>..\packages\WebGrease.1.5.2\lib\WebGrease.dll</HintPath> <SpecificVersion>False</SpecificVersion> <Private>True</Private> </Reference> 

对此

 <Reference Include="WebGrease, Version=1.6.5135.21930, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> <HintPath>..\packages\WebGrease.1.6.0\lib\WebGrease.dll</HintPath> <SpecificVersion>False</SpecificVersion> <Private>True</Private> </Reference> 

请记住,我没有在我的本地机器上的问题,只是在舞台上的Web服务器。 我想尽我所能解决问题,而不更新包,但这是我唯一的解决scheme。

尝试了很多东西,但这有效的webwease组装有时问题,有时Web.Optimization组装问题。 这对我来说与Microsoft.AspNet.Web.Optimization 1.1.3

 Update-Package WebGrease -Version 1.6 

老人,但goldie …

我在Visual Studio 2013中开发了一个MVC 5项目,并且遇到了同样的问题。 我们使用Visual SVN进行版本控制,而我是我的团队中唯一遇到这个问题的人。

唯一对我有用的是这样的:

  1. 卸载Microsoft.AspNet.Web.Optimization
  2. 在Nuget命令提示符下运行:install-package Microsoft.AspNet.Web.Optimization -Version 1.0.0

这将安装旧版本的Web.Optimization。 该项目最初引用版本1.1.0。 问题不在于WebGrease,而在于System.Web.Optimization.dll引用了WebGrease的旧版本。

当我运行这个项目的时候,它运行起来了,但是我想和其他团队一样使用相同的软件包版本。 所以,我试图更新,但…错误返回…

之后,我再次删除了这个项目,并从SVN中取回了它。 对我来说,它开始工作…事情是,我已经完全删除了项目,并在此之前从SVN几次。 我甚至把一个同事的DLL,因为我认为也许我从NuGet中得到损坏的文件,但无济于事。

我希望这将有助于某个人,有一天..与Visual Studio 2016和MVC 8 🙂

当你redirectwebgrease时,请确保你的assemblyBinding元素没有applyTo属性。 对我来说,我把它彻底清除了。

在这里输入图像说明

由于我无法使用包pipe理器控制台卸载,所以我手动去了packages.config并注释掉了旧版本。

其他的答案并没有解决这个问题。 我们正在添加一个更新的MVC 5 API项目,并且与旧的MVC 2 API不兼容。 运行包更新后,我得到了提到的错误。 我的决议是删除由NuGet在web.config的违规项目中添加的WebGrease引用。

解决方法:打开引发exception的项目的web.config,删除或注释为WebGrease添加的依赖关系。

Alreasy解决了这个错误。 情况比我想象的要简单。 当你从nuget安装新版本的System.Web.Optimization时,它有参考

//参考:WebGrease,Version = 1.5.1.25624,Culture = neutral,PublicKeyToken = 31bf3856ad364e35

同时我有WebGrease版本1.5.2.14234。 运行项目,我们有这个错误:无法加载文件或程序集'WebGrease,版本= 1.5.1.25624

所以,我试图在nuget上检查这个版本,并感到惊讶,这不是…但是当我用VS创build新的项目 – 我明白了。 要破解这个错误,我尝试在GAC中安装它。但gac说,这个库没有订阅。 降级到System.Web.Optimization版本= 1.1.0.0,其中引用是:

//参考:WebGrease,Version = 1.3.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35

和1.3.0.0强烈订阅 – 帮助我。 有用。 升级webgrease后,我有它版本= 1.6.5135.21930,它的工作完美。

最后,我有一个意见,比这个错误(无法加载文件或程序集'WebGrease,版本= 1.5.1.25624)是因为该System.Web.Optimization库引用取消订阅webgrease dll版本。

在部署期间,我遇到了这个问题。

我将WebGrease.dll复制到生产环境中,但是我忘了更新Web.Config文件。

 <configuration> <runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-1.5.2.14234" newVersion="1.5.2.14234" /> </dependentAssembly> </assemblyBinding> </runtime> </configuration> 

我使用了"Install-Package Microsoft.AspNet.Web.Optimization" (当前版本为1.1.3),用于starup web-project ,默认情况下它并未在NuGet控制台中select。

NuGet已经创build了一个新的app.config文件,即使web.config预计会被更新。

对我来说,它将WebGrease dependentAssembly元素从app.config 移动web.config<runtime><assemblyBinding>...</assemblyBinding></runtime>

如果您不将Web.config文件部署到Web服务器,也可能会出现此问题。

这是我做了什么来解决它,

  1. 我将当前(损坏的项目)的Web.config文件的副本保存为“Corrupted-Web.Config”。 并closures项目解决scheme。
  2. 创build一个新的应用程序与我的同types的被推荐的项目。 称之为ProjTemp。
  3. 保存并运行“PorjTemp”,然后将Web.Config的副本保存到“OrigTemp_Web.config”
  4. closuresWeb.config文件。
  5. 在“ProjTemp”打开工具 – >“NuGet软件包pipe理器” – >“pipe理NuGet软件包的解决scheme”—>select更新所有相关的已安装软件包。 6现在打开最新更新的Web.config文件。 复制从更新“”从“开始”获取信息

 <runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> --- Copy this section to replace in the corrupted file.--- </assemblyBinding> </runtime> 

  1. 保存你的项目。 重build和运行。 希望这会有所帮助! ….

例如,这里是更正的VS2015。


 <runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="Newtonsoft.Json" culture="neutral" publicKeyToken="30ad4fe6b2a6aeed" /> <bindingRedirect oldVersion="0.0.0.0-8.0.0.0" newVersion="8.0.0.0" /> </dependentAssembly> <dependentAssembly> <assemblyIdentity name="WebGrease" culture="neutral" publicKeyToken="31bf3856ad364e35" /> <bindingRedirect oldVersion="0.0.0.0-1.6.5135.21930" newVersion="1.6.5135.21930" /> </dependentAssembly> <dependentAssembly> <assemblyIdentity name="EntityFramework" publicKeyToken="b77a5c561934e089" /> <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" / </dependentAssembly> <dependentAssembly> <assemblyIdentity name="Microsoft.Owin" culture="neutral" publicKeyToken="31bf3856ad364e35" /> <bindingRedirect oldVersion="0.0.0.0-3.0.1.0" newVersion="3.0.1.0" / </dependentAssembly> <dependentAssembly> <assemblyIdentity name="Microsoft.Owin.Security.OAuth" culture="neutral" publicKeyToken="31bf3856ad364e35" /> <bindingRedirect oldVersion="0.0.0.0-3.0.1.0" newVersion="3.0.1.0" /> </dependentAssembly> <dependentAssembly> <assemblyIdentity name="Microsoft.Owin.Security.Cookies" culture="neutral" publicKeyToken="31bf3856ad364e35" /> <bindingRedirect oldVersion="0.0.0.0-3.0.1.0" newVersion="3.0.1.0" /> </dependentAssembly> <dependentAssembly> <assemblyIdentity name="Microsoft.Owin.Security" culture="neutral" publicKeyToken="31bf3856ad364e35" /> <bindingRedirect oldVersion="0.0.0.0-3.0.1.0" newVersion="3.0.1.0" /> </dependentAssembly> <dependentAssembly> <assemblyIdentity name="Antlr3.Runtime" publicKeyToken="eb42632606e9261f" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-3.5.0.2" newVersion="3.5.0.2" /> </dependentAssembly> </assemblyBinding> </runtime> 

这是我已经做了解决它, 解决scheme在Github萨米Oweis 4电脑