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

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

无法加载文件或程序集“ WebGrease,Version = 1.5.1.25624,Culture = none,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" />
84553 次浏览

你试过 NuGet 吗?

Install-Package WebGrease -Version 1.5.1

或者

Install-Package WebGrease -Version 1.5.2

我知道现在进行 OP 有点晚了,但是我在试验 引导程序3用于 MVC 4 NuGet 包时遇到了同样的问题,在我的例子中,它与 网络优化包有关,并且设法找到了一个简单的解决方案。

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

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

前两行对我没有影响,因为这些包已经被 引导程序3用于 MVC 4包安装和更新了,但我还是运行了它们,然后它们都编译好了,运行得很好。

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

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

已解决此错误。情况比我想象的要简单。当您从 nugetNew 版本的 System 安装时。韦伯。它参考了优化

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

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

Soo, i try to check this version on nuget and was surprized, that it wasn't...but when i create new project with VS - i got it. To hack this error i try to install it in GAC..but gac says me, that this lib is not subscribed. Downgrading to System.Web.Optimization Version=1.1.0.0 , where reference is:

//参考文献: WebGrease,Version = 1.3.0.0,Culture = Central,PublicKeyToken = 31bf3856ad364e35

和1.3.0.0是强烈的订阅-帮助我。有用。升级后,我有它的版本 = 1.6.5135.21930,它工作得很好。

最后,我有一个意见,比这个错误(无法加载文件或程序集‘ WebGrease,Version = 1.5.1.25624)是因为该系统。韦伯。优化库被引用到未订阅的 webGreatdll 版本。

虽然老,但是很好。

我在 VisualStudio2013中做一个 MVC5项目,遇到了同样的问题。我们使用 VisualSVN 进行版本控制,我是我的团队中唯一有这个问题的人。

唯一对我有用的就是:

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

这将安装旧版本的 Web。优化。该项目最初引用的是1.1.0版。问题不在于 WebGrease,而在于系统。韦伯。Dll,它引用了一个旧的、不存在的 WebGrease 版本。

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

在此之后,我(再次)删除了项目,并从 SVN 中取回了它。令我惊讶的是,它开始工作... ... 问题是,我已经完全删除了该项目,并从 SVN 之前几次。我甚至从一个同事那里拿走了 dls,因为我想也许我从 NuGet 那里得到了损坏的文件,但是没有用。

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

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

对我来说,以上的方案都不管用。

经过两天的努力,我终于找到了解决办法。

我所做的就是卸载了 网络优化网络油脂

我知道这个优化程序集在内部引用 WebGrease1.5.1。所以我选择了一个不参考 WebGrease1.5.1的优化版本。

为了让一切正常运行,我按照命令运行。

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

我希望我将能够成为一个很好的帮助有人上述解决方案不工作。

干杯!

我在执行任务时遇到了这个问题。

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

当您重定向 weboil 时,请确保您的 装配装订元素上没有 申请属性。对我来说,我把它完全移除了。

enter image description here

我观察到的问题与 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”添加到{项目名称} 成功地将“ WebGrease 1.6.0”添加到{项目名称} 卸载“ 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>

请记住,我没有在我的本地机器上有问题,只是在一个阶段网络服务器。我想尽力解决这个问题而不更新软件包,但这是我唯一的修复方法。

尝试了很多事情,但这对我有时工作,有时网络润滑脂装配问题,有时网络。优化装配问题。这对我在微软的工作很有用。AspNet.韦伯。优化1.1.3

Update-Package WebGrease -Version 1.6

我是这么做的,

  1. 我将当前(已损坏的项目)的 Web.config 文件的一个副本保存为“ Corrupt-Web”。配置”。并关闭项目解决方案。
  2. 创建了一个新的应用程序与我的相同类型的追求项目。称之为 ProjTemp。
  3. 保存并运行“ PorjTemp”,然后将 Web.Config 的副本保存到 “ OrigTemp _ Web. config”
  4. 关闭 Web.config 文件。
  5. 关于“ ProjTemp”开放工具—— > “ NuGet Package Manager”—— > “ Manage” NuGet 解决方案软件包”——-> 选择更新所有相关内容 现在打开新更新的 Web.config 文件。 从更新的“从”复制获取信息

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

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

这里是一个更正的例子,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>

这就是我为解决这个问题所做的工作。 Github 上的解决方案 萨米,欧维斯4号电脑

因为无法使用软件包管理器控制台卸载,所以我手动转到 packages.config并注释掉旧版本。

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

我对启动 网上计划使用了 "Install-Package Microsoft.AspNet.Web.Optimization"(当前版本是1.1.3) ,默认情况下 NuGet 控制台没有选择它。

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

对我来说,从 app.configweb.config<runtime><assemblyBinding>...</assemblyBinding></runtime>,它对 移动 WebGrease 依赖项 Assembly元素起作用。

VS 2017似乎存在不部署 web.config 的问题,尽管文件的属性被设置为“ copy always”。在我的项目中,我必须为不同的部署场景交换不同的 web.config 文件。如果没有部署文件,就会出现“ webfat”错误。

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

我也遇到过同样的问题,通过以下方法解决了这个问题:

  1. 卸载 Microsoft.AspNet.Web.Optimationnuget 包。
  2. 卸载 Antlr nuget 包,因为它是 WebGrease 包的依赖项。
  3. 卸载 WebGrease 插件包。
  4. 安装 Microsoft。AspNet.韦伯。再次优化 nuget 包,这个操作将负责安装 Antlr 和 WebGrease,因为它们是它的依赖项。

在我的案例中,上述任何一种解决方案都无法解决这个问题。有关 weboil 的错误实际上是一个转移注意力的问题... 这是一个无效的(完全不相关的)程序集绑定重定向的问题。我猜测 web.config 文件的这个问题导致了所有的程序集绑定重定向失败,而这恰好导致了 WebGrease 的运行时问题。

基本上,在合并过程中,其中一个绑定重定向已经损坏,并且最终在一个 <dependentAssembly>标记中出现了两个程序集重定向。

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