我有一个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" />
请告知我缺少的东西。
你试过NuGet吗?
Install-Package WebGrease -Version 1.5.1
要么
Install-Package WebGrease -Version 1.5.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
。
其他答案并没有解决这个问题。我们正在添加一个更新的MVC 5 API项目,它与旧的MVC 2 API不相称。运行包更新后,我收到了上述错误。我的解决方案是删除NuGet在违规项目的web.config中添加的WebGrease引用。
要解决:打开抛出异常的项目的web.config,删除或注释掉为WebGrease添加的依赖项。
已经解决了这个错误。情况比我想象的要简单。从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版本。
我在部署期间遇到了这个问题。
我将WebGrease.dll复制到生产中,但我忘了更新Web.Config文件。
web.config
这是我做的事情,
<runtime><assemblyBinding>...</assemblyBinding></runtime>
这是经过修正的,例如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计算机
如果不将Web.config文件部署到Web服务器,也可能会出现此问题。
我知道这对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软件包安装和更新,但是无论如何我都运行它们然后编译并运行良好。
这个错误是因为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>
对我来说,上述情况均无效。
经过两天的努力,终于找到了解决方案。
我做的是,我卸载了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
我希望我能够为那些以上解决方案无效的人提供良好的帮助。
干杯!
我观察到的问题与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服务器上。我想在不更新软件包的情况下尽力解决问题,但这是我唯一的修复方法。
试了很多东西,但这对我有用,有时webgrease汇编问题有时Web.Optimization汇编问题。这适用于Microsoft.AspNet.Web.Optimization 1.1.3
Update-Package WebGrease -Version 1.6
Oldie但是goldie ......
我在Visual Studio 2013中正在开发一个MVC 5项目,我遇到了同样的问题。我们使用Visual SVN进行版本控制,我是团队中唯一遇到此问题的人。
唯一对我有用的是:
- 卸载Microsoft.AspNet.Web.Optimization
- 在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 :)
由于我无法使用包管理器控制台卸载,因此我手动转到qazxsw poi并注释掉旧版本。