无法加载文件或程序集'WebGrease,Version = 1.5.1.25624,Culture = neutral,PublicKeyToken = 31bf3856ad364e35'或其依赖项之一

时间:2013-11-08 04:59:28

标签: c# .net asp.net-mvc-4 dll webgrease

我有一个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" />

请告知我缺少的东西。

18 个答案:

答案 0 :(得分:82)

我知道OP的时间已经晚了但我在试用 Bootstrap 3 for MVC 4 NuGet包时遇到了同样的问题,在我的情况下它与 Microsoft.AspNet.Web.Optimization 包,并设法找到一个简单的解决方案。

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

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 软件包安装和更新,但我还是运行它们然后编译并运行得很好。

答案 1 :(得分:57)

此错误是因为Microsoft.AspNet.Web.Optimization 1.1.3内部引用WebGrease 1.5.1.25624,即使Nuget包本身依赖WebGrease 1.5.2.14234。在创建Nuget包时,有人显然搞砸了。

要解决此问题,请在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>

答案 2 :(得分:46)

您是否尝试过NuGet?

Install-Package WebGrease -Version 1.5.1

Install-Package WebGrease -Version 1.5.2

答案 3 :(得分:14)

对我来说,上述情况均无效。

尝试了两天后,终于找到了解决方案。

我做的是,我卸载了 Microsoft.AspNet.Web.Optimization WebGrease

我知道这个优化程序集内部是指WebGrease 1.5.1。所以我选择了一个不参考WebGrease 1.5.1的优化版本。

我运行了以下命令,以使一切正常。

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

我希望我能为那些以上解决方案无效的人提供良好的帮助。

干杯!

答案 4 :(得分:7)

我观察到的问题与Jidheesh Rajan提到的问题非常吻合。但是,从Nuget包管理器更新包(未指定版本)无法解决问题。 以下是我必须采取的措施来解决这个问题。 (基本上,我明确地将WebGrease更新为版本1.6)

在Visual Studio的程序包管理器控制台中,显式将WebGrease更新为1.6版。这是命令。

Install-Package WebGrease -Version 1.6

输出应为

Removing 'WebGrease 1.5.2' from {project name}

添加&#39; WebGrease 1.6.0&#39;到{项目名称} 成功添加了WebGrease 1.6.0&#39;到{项目名称} 卸载&#39; WebGrease 1.5.2&#39;。 已成功卸载WebGrease 1.5.2&#39;。

最终使用

更新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>

请记住,我在本地计算机上没有问题,只是在舞台网络服务器上。我想在不更新软件包的情况下尽力解决问题,但这是我唯一的修复方法。

答案 5 :(得分:5)

尝试了很多东西,但这对我有用,有时webgrease汇编问题有时候Web.Optimization汇编问题。这适用于Microsoft.AspNet.Web.Optimization 1.1.3

Update-Package WebGrease -Version 1.6

答案 6 :(得分:4)

Oldie,但是Goldie ......

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

唯一对我有用的是:

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

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

当我运行该项目时,它有效,但我想使用与团队其他成员相同的软件包版本。所以,我试图更新,但......错误返回...

在此之后,我(再次)删除了项目并从SVN取回了它。令我惊讶的是,它开始起作用......事情是我完全删除了项目并在此之前多次从SVN中取出它。我甚至从一位同事那里拿走了dll因为我认为可能是我从NuGet那里得到了损坏的文件,但无济于事。

我希望有一天能帮助某人......使用Visual Studio 2016和MVC 8:)

答案 7 :(得分:4)

重定向webgrease时,请确保 assemblyBinding 元素上没有 applyTo 属性。对我来说,我完全删除了它。

enter image description here

答案 8 :(得分:2)

由于我无法使用包管理器控制台卸载,因此我手动转到print ("{}'s hand: {}, {} : {}".format(name, faces[0], faces[1], value)) 并注释掉旧版本。

答案 9 :(得分:2)

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

  

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

对我而言,将WebGrease dependentAssembly 元素从app.config移至web.config的{​​{1}}。

答案 10 :(得分:1)

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

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

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

Soo,我试着在nuget上检查这个版本并且被惊讶,它不是......但是当我用VS创建新项目时 - 我得到了它。为了破解这个错误,我尝试在GAC中安装它。但是gac说我,这个lib没有订阅。降级到System.Web.Optimization Version = 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 lib被引用到未订阅的webgrease dll版本。

答案 11 :(得分:1)

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

我将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>

答案 12 :(得分:1)

其他答案并没有为我解决这个问题。我们正在添加一个更新的MVC 5 API项目,它与旧的MVC 2 API不相称。运行包更新后,我收到了上述错误。我的解决方案是删除NuGet在违规项目的web.config中添加的WebGrease引用。

要解决: 打开抛出异常的项目的web.config,删除或注释掉为WebGrease添加的依赖项。

答案 13 :(得分:0)

以下是我采取的措施,

  1. 我将当前(已损坏的项目)的Web.config文件的副本保存到了#34; Corrupted-Web.Config&#34;。并关闭项目解决方案。
  2. 使用相同类型的courrpted项目创建了一个新应用程序。称之为ProjTemp。
  3. 保存并运行&#34; PorjTemp&#34;,然后将Web.Config的副本保存到 &#34; OrigTemp_Web.config&#34;
  4. 关闭Web.config文件。
  5. 在&#34; ProjTemp&#34;打开工具 - &gt; &#34; NuGet包管理器&#34; - &GT; &#34;管理 NuGet解决方案包#34; ---&GT;选择更新所有相关 安装包。 6现在打开新更新的Web.config文件。 复制从更新的&#34;&#34;获取信息从&#34;
  6. 开始
    <runtime>
            <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">  
                 --- Copy this section to replace in the corrupted file.---
           </assemblyBinding>
    </runtime>
    
    1. 保存您的项目。重建并运行。希望这会有所帮助! ....
    2. 以下是更正后的例子,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>
      

      我采取了哪些措施来修复它,Solution on Github Sami,Oweis 4计算机

答案 14 :(得分:0)

VS 2017似乎存在不部署web.config的问题,即使该文件的属性设置为“始终复制”。在我的项目中,我必须针对各种部署方案交换不同的web.config文件。如果未部署文件,将出现“ webgrease”错误。

只需验证web.config文件是否已部署。

答案 15 :(得分:0)

我也遇到了相同的问题,并通过以下操作设法解决了这个问题:

  1. 卸载Microsoft.AspNet.Web.Optimization nuget程序包。
  2. 卸载Antlr nuget软件包,因为它依赖于WebGrease软件包。
  3. 卸载WebGrease nuget软件包。
  4. 再次安装Microsoft.AspNet.Web.Optimization nuget软件包,此操作将负责安装Antlr和WebGrease,因为它们是它们的依赖项。

答案 16 :(得分:0)

就我而言,上述任何解决方案都无法解决。与webgrease有关的错误实际上是一个红色鲱鱼……这是一个无效(且完全不相关)的程序集绑定重定向的问题。我猜想我的web.config文件存在此问题,导致所有程序集绑定重定向均失败,并且恰好这导致WebGrease出现运行时问题。

基本上,在合并期间,绑定重定向之一已损坏,并且最终在单个<dependentAssembly>标签内产生了两个程序集重定向。

因此,如果遇到此问题,并且已经为WebGrease正确设置了绑定重定向,则值得对所有其他程序集绑定重定向进行扫描以检查它们是否已损坏。

答案 17 :(得分:-1)

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

相关问题