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

问题描述 投票:66回答:15

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

请告知我缺少的东西。

c# .net asp.net-mvc-4 dll webgrease
15个回答
47
投票

你试过NuGet吗?

Install-Package WebGrease -Version 1.5.1

要么

Install-Package WebGrease -Version 1.5.2

2
投票

我使用qazxsw poi(当前版本是1.1.3)用于启动web项目,默认情况下未在NuGet控制台中选择。

但是NuGet创建了一个新的app.config文件,即使web.config有望更新。

对我来说,它将WebGrease dependentAssembly元素从packages.config移动到"Install-Package Microsoft.AspNet.Web.Optimization"app.config


1
投票

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

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


1
投票

已经解决了这个错误。情况比我想象的要简单。从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

所以,我试着在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版本。


1
投票

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

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

web.config

0
投票

这是我做的事情,

  1. 我将当前(损坏的项目)的Web.config文件的副本保存到“Corrupted-Web.Config”。并关闭项目解决方案。
  2. 创建了一个与我的损坏项目类型相同的新应用程序。称它为ProjTemp。
  3. 保存并运行“PorjTemp”,然后将Web.Config的副本保存到“OrigTemp_Web.config”
  4. 关闭Web.config文件。
  5. 在“ProjTemp”上打开工具 - >“NuGet包管理器” - >“管理解决方案的NuGet包”--->选择更新所有相关的已安装包。 6现在打开新更新的Web.config文件。复制从更新“”开始的“获取信息”

<runtime><assemblyBinding>...</assemblyBinding></runtime>

  1. 保存您的项目。重建并运行。希望这会有所帮助! ....

这是经过修正的,例如VS2015。


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

这就是我所做的修复它,<runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> --- Copy this section to replace in the corrupted file.--- </assemblyBinding> </runtime> 萨米,Oweis 4计算机


-1
投票

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


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软件包安装和更新,但是无论如何我都运行它们然后编译并运行良好。


58
投票

这个错误是因为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>

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

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

干杯!


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}

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

最终用web更新了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服务器上。我想在不更新软件包的情况下尽力解决问题,但这是我唯一的修复方法。


5
投票

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

Update-Package WebGrease -Version 1.6

4
投票

Oldie但是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,而在于引用旧的,不存在的WebGrease版本的System.Web.Optimization.dll。

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

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

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


4
投票

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

enter image description here


2
投票

由于我无法使用包管理器控制台卸载,因此我手动转到qazxsw poi并注释掉旧版本。

© www.soinside.com 2019 - 2024. All rights reserved.