升级WebGrease到版本1.3.0让我错误

WebGrease升级到版本1.3.0时出现错误:

无法加载文件或程序集“WebGrease,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35”或其某个依赖项。 定位的程序集清单定义与程序集引用不匹配。 (来自HRESULT的exception: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文件,重新创build并粘贴内容。

这是为我工作的最终解决scheme。

 <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中redirect程序集 ,或者更好地重新编译二进制文件以使用最新版本。

如果最新版本与旧版本(1.0.0.0)共享相同的程序集版本,则需要重新编译代码以使用正确的程序集,并确保使用正确的副本(检查GAC是否有错误,使用fuslogv调查确切文件造成了错误)。

我遇到过同样的问题。 另一个开发人员升级了WebGrease包(以及其他的),但没有同步或检入。我编辑了包文件以删除对现有包的引用。 然后我通过软件包pipe理器重新安装。 最后,我更新了软件包。

看起来好像软件包不会安装或更新,如果packages.config文件不匹配项目中的文件(包括正确的版本)。 包pipe理器中没有给出错误,但它只是无法更新或安装包。

以下的组合解决了我的问题。 首先,在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" /> 

为我工作的绑定redirect:

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

微妙的区别是我没有包含这个版本(1.3.0.0)在oldVersion属性。

失败蛋糕!

我有一个类似的问题,除了这不是一个错误,而是一个警告。 在将WebGrease更新为1.3.0之后,构build将警告源放在声明上。 确保在我的web.config文件中有适当的程序集redirect后,我最终创build了一个新的_Layout.cshtml视图,并使用与之前(复制/粘贴)相同的razor标记保存在旧文件上。 之后,警告消失了。

我不完全确定警告是什么,但尝试复制您的代码在您的文件,粘贴到一个新的文件,并覆盖原来的。

如果有人有任何洞察力,为什么这个工程,我都耳朵。

这是与Microsoft.AspNet.Web.Optimization(优化前进)的问题。

您需要通过卸载Optimize并从web.config中删除任何WebGrease程序集redirect来降级WebGrease。

然后重新安装优化,并确保您不要升级WebGrease。

这是一个快速修复,但它让我的构build工作!

对于一个Web API项目,我正在研究真正的工作如下:

  1. 打开NuGet包pipe理器,单击Installed packages ,然后卸载Microsoft.AspNet.Web.Optimization 。 它会提示它将删除WebGrease 1.1.0 。 打Yes

  2. 现在重新安装它,点击NuGet的在线标签,然后searchMicrosoft.AspNet.Web.Optimization

现在一切都按预期工作。

感谢@roadsunknown。 我的主机冻结后,我的configuration变得困难,从而导致我的虚拟机不能正常closures。 为了解决这个问题,我通过NuGet卸载了Microsoft.AspNet.Web.Optimization,然后不得不在Package.config中移除对WebGrease的引用,最后通过NuGet重新安装了Microsoft.AspNet.Web.Optimization。

为了解决这个问题,我所做的只是更新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在西class牙,顺便说一句)。

 <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.Optimization和WebGrease Packages来解决这个问题,然后在记事本中打开我的项目文件(.csproj),并删除与这两个包有关的所有条目,结果出现问题。 最后,我再次通过包pipe理器安装这两个包,并运行项目。 现在所有的工作都很好。