将WebGrease升级到1.3.0版本会让我出错

时间:2012-11-29 05:11:46

标签: asp.net-mvc-3 asp.net-mvc-4 webgrease

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

如何解决此错误。

13 个答案:

答案 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项目,我正在研究真正有效的方法如下:

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

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

  3. 现在一切都按预期工作了。

答案 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)并删除与这两个软件包相关的所有条目,结果表明存在问题。最后,我再次通过包管理器安装这两个包并运行项目。现在一切都很好。