将WebGrease
升级到版本1.3.0
时出现错误:
无法加载文件或程序集"WebGrease,版本=1.0.0.0,区域性=中性,公钥令牌=31bf3856ad364e35"或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。(HRESULT的例外:0x80131040)
源错误:
Line 6: <title>@ViewBag.Title</title>
Line 7: @Styles.Render("~/Content/bundles/bootstrap")
如何解决此错误。
我有用的答案,它是上述一些答案的组合。首先安装/卸载/重新安装以下软件包:
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
然后复制 ~/Views/Shared/_Layout.cshtml 的内容删除 _Layout.cshtml 文件,重新创建它,然后将内容粘贴回去。
这是对我有用的最终修复。
<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.0.0.0?)版本的程序集(假设当前版本是1.3.0.0)。在这种情况下,您需要在 web.config 中进行程序集重定向,或者更好地重新编译二进制文件以使用最新版本。
另一种可能性是,如果最新版本与旧版本(1.0.0.0)共享相同的程序集版本,则需要重新编译代码以使用正确的程序集并确保使用正确的副本(检查GAC是否有错误的版本,使用fuslogv调查导致错误的确切文件)。
我遇到了同样的问题。另一位开发人员升级了 WebGrease 包(以及其他软件包),但有些东西没有同步或签入。我编辑了包文件以删除对现有包的引用。然后我通过包管理器重新安装。最后,我更新了软件包。
如果 packages.config 文件与项目中的文件(包括正确版本)不匹配,包似乎不会安装或更新。但是,包管理器中没有给出任何错误,它只是无法更新或安装包。
以下组合为我解决了这个问题。首先,在包管理器命令行上运行以下命令(类似于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" />
对我有用的绑定重定向:
<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)。
失败的蛋糕!
我遇到了类似的问题,只是这不是错误而是警告。 将 WebGrease 更新到 1.3.0 后,构建会将警告源放在声明上。 在确保我的 web.config 文件中具有适当的程序集重定向后,我最终创建了一个新的 _Layout.cshtml 视图,并使用与上一个完全相同的 razor 标记(复制/粘贴)保存在旧文件上。 在那之后,警告消失了。
我不确定警告的全部内容,但请尝试将代码复制到文件中,将其粘贴到新文件中并覆盖原始文件。
如果有人对为什么会这样有任何见解,我全都听见了。
Microsoft.AspNet.Web.Optimization(优化前进)的问题。
您需要通过卸载 Optimise 并从 web.config 中删除任何 WebGrease 程序集重定向来降级 WebGrease。
然后重新安装 Optimise 并确保未升级 WebGrease。
这是一个快速修复,但它让我的构建正常工作!
对于一个 Web API 项目,我正在研究真正有效的方法如下:
-
打开 NuGet 包管理器,单击
Installed packages
,然后卸载Microsoft.AspNet.Web.Optimization
。它会提示它将删除WebGrease 1.1.0
.打Yes
. -
现在重新安装它,单击 NuGet 的在线选项卡并搜索
Microsoft.AspNet.Web.Optimization
.
现在一切都按预期工作。
感谢@roadsunknown。 我的配置在主机冻结后被灌输,从而导致我的 VM 无法正常关闭。 为了解决这个问题,我通过NuGet卸载了Microsoft.AspNet.Web.Optimization,然后不得不删除packages.config中对WebGrease的引用,最后通过NuGet重新安装了Microsoft.AspNet.Web.Optimize。
为了解决这个问题,我所做的只是更新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>
干杯!!!
这就是我的运行时部分的样子,它可以工作
<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>
与 Hriju 和 Nathan (卸载、重新安装和更新)相同,只是我没有省略 newVersion
属性,而是保留了它。但是由于 WebGrease 从 1.1.0 直接变成了 1.3.0,所以不需要 1.2.0(就像 jenson-button-event 所说的那样)(祝西班牙的 JB 好运,顺便说一句)。
<assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-1.1.0.0" newVersion="1.3.0.0" />
迂?也许吧,但它总是在细节中,对吧?这为我修复了它。
无论如何,这是希望他们在下一次更新中做对了。
就我而言,所有这些方法都不起作用。最后,我通过包管理器卸载Microsoft.AspNet.Web.Optimize和WebGrease包来解决此问题,然后在记事本中打开我的项目文件(.csproj)并删除与这两个包相关的所有条目,结果发现有问题。最后,我再次通过包管理器安装这两个包并运行项目。现在一切正常。