将WebGrease
升级到版本1.3.0
会导致错误:
无法加载文件或程序集'WebGrease,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35'或其依赖项之一。定位的程序集的清单定义与程序集引用不匹配。 (HRESULT异常:0x80131040)
来源错误:
Line 6: <title>@ViewBag.Title</title>
Line 7: @Styles.Render("~/Content/bundles/bootstrap")
如何解决此错误。
答案 0 :(得分:17)
<assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-1.3.0.0" newVersion="1.3.0.0" /> </dependentAssembly>
将Web.config
中的高级代码更改为以下
<assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-1.3.0.0"/> </dependentAssembly>
答案 1 :(得分:4)
看起来您已经引用了较旧的(1.0.0.0?)版本的程序集(假设当前版本是1.3.0.0)。在这种情况下,您需要在web.config中使用assembly redirect,或者更好地重新编译二进制文件以使用最新版本。
另一种可能性如果最新版本与旧版本(1.0.0.0)共享相同的程序集版本,则需要重新编译代码以使用正确的程序集并确保使用正确的副本(检查GAC是否有错误,使用{{3调查导致错误的确切文件。)
答案 2 :(得分:3)
我有同样的问题。另一位开发人员升级了WebGrease软件包(以及其他软件包),但是没有同步或签入的东西。我编辑了包文件以删除对现有软件包的引用。然后我通过包管理器重新安装。最后,我更新了包。
如果packages.config文件与项目中的文件(包括正确的版本)不匹配,似乎软件包将无法安装或更新。但是,程序包管理器中没有给出错误,它只是无法更新或安装程序包。
答案 3 :(得分:3)
以下的组合为我解决了这个问题。首先,在Package Manager命令行上运行以下命令(类似于sec_goat提供的答案,但不完全相同):
Uninstall-Package Microsoft.AspNet.Web.Optimization
Uninstall-Package WebGrease
Install-Package Microsoft.AspNet.Web.Optimization
Update-Package WebGrease
然后,类似于Hriju,我需要在web.config中更改此行:
<assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-1.3.0.0" newVersion="1.3.0.0" />
进入这个:
<assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-1.3.0.0" />
答案 4 :(得分:2)
对我有用的绑定重定向:
<dependentAssembly>
<assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-1.2.0.0" newVersion="1.3.0.0"/> </dependentAssembly>
</assemblyBinding>
微妙的区别是我在oldVersion
attr中没有包含此版本(1.3.0.0)。
失败的蛋糕!
答案 5 :(得分:1)
我有类似的问题,除了它不是错误而是警告。在将WebGrease更新为1.3.0之后,构建将警告源放在声明上。确保我在web.config文件中有适当的程序集重定向后,我最终创建了一个新的_Layout.cshtml视图,并使用与之前(复制/粘贴)完全相同的剃刀标记保存在旧文件上。在那之后,警告就消失了。
我不确定警告是什么,但请尝试将代码复制到文件中,将其粘贴到新文件中并覆盖原始文件。
如果有人知道为什么会这样有效,我会全力以赴。
答案 6 :(得分:1)
这是Microsoft.AspNet.Web.Optimization(优化前进)的问题。
您需要通过卸载Optimize并从web.config中删除任何WebGrease程序集重定向来降级WebGrease。
然后重新安装Optimize并确保不升级WebGrease。
这是一个快速修复,但它让我的构建工作!
答案 7 :(得分:1)
对于Web API项目,我正在研究真正有效的方法如下:
打开NuGet包管理器,单击Installed packages
,然后卸载Microsoft.AspNet.Web.Optimization
。它会提示它将删除WebGrease 1.1.0
。点击Yes
。
现在重新安装它,点击NuGet的在线标签,然后搜索Microsoft.AspNet.Web.Optimization
。
现在一切都按预期工作了。
答案 8 :(得分:0)
感谢@roadsunknown。我的主机冻结后,我的配置被清除,从而导致我的VM无法正常关闭。为了解决这个问题,我通过NuGet卸载了Microsoft.AspNet.Web.Optimization,然后不得不在packages.config中删除对WebGrease的引用,最后通过NuGet重新安装了Microsoft.AspNet.Web.Optimization。
答案 9 :(得分:0)
要解决此问题,我所做的只是更新package.config文件(WEBMATRIX)
<packages>
<package id="Microsoft.AspNet.Web.Optimization" version="1.0.0" targetFramework="net40" />
<package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net40" />
<package id="WebGrease" version="1.3.0" targetFramework="net40" />
</packages>
干杯!!!
答案 10 :(得分:0)
与Hriju和Nathan相同的交易(卸载,重新安装和更新),我保留了它,而不是省略newVersion
属性。但是,由于WebGrease从1.1.0直接变为1.3.0,因此不需要1.2.0(正如简森按钮事件那样)(祝西班牙JB好运,顺便说一句)。
<assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-1.1.0.0" newVersion="1.3.0.0" />
迂腐?也许,但它始终在细节中,对吗?这为我修好了。
无论如何,这是希望他们在下次更新时做得好。
答案 11 :(得分:0)
这是我的运行时部分看起来像它的工作原理
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="3.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-1.2.0.0" newVersion="1.3.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
答案 12 :(得分:0)
在我的情况下,所有这些方法都不起作用。最后,我通过软件包管理器卸载Microsoft.AspNet.Web.Optimization和WebGrease软件包解决了这个问题,然后在记事本中打开我的项目文件(.csproj)并删除与这两个软件包相关的所有条目,结果表明存在问题。最后,我再次通过包管理器安装这两个包并运行项目。现在一切都很好。