无法加载文件或程序集“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.Optimization和WebGrease两者。
我知道这个优化程序集内部是指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进行版本控制,而我是我的团队中唯一遇到这个问题的人。
唯一对我有用的是这样的:
- 卸载Microsoft.AspNet.Web.Optimization
- 在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服务器,也可能会出现此问题。
这是我做了什么来解决它,
- 我将当前(损坏的项目)的Web.config文件的副本保存为“Corrupted-Web.Config”。 并closures项目解决scheme。
- 创build一个新的应用程序与我的同types的被推荐的项目。 称之为ProjTemp。
- 保存并运行“PorjTemp”,然后将Web.Config的副本保存到“OrigTemp_Web.config”
- closuresWeb.config文件。
- 在“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>
- 保存你的项目。 重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电脑