【问题标题】:Upgrading WebGrease to version 1.3.0 gets me error将 WebGrease 升级到 1.3.0 版让我出错
【发布时间】:2012-11-17 03:23:28
【问题描述】:

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

如何解决此错误。

【问题讨论】:

  • 下面的一些解决方案涉及使用 bindingRedirect 来强制 System.Web.Optimization 程序集绑定到较新的版本。但对于一些用户来说,它不起作用——包括我。我发现 web.config 中的绑定重定向被忽略了。请参阅我在这篇文章中的回答,了解如何解决这个问题。 stackoverflow.com/questions/16866676

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


【解决方案1】:

这是对我有用的答案,它是上述一些答案的组合。 首先安装/卸载/重新安装以下包:

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 文件,重新创建并粘贴内容。

这是对我有用的最终修复。

【讨论】:

  • 这是正确答案。这样做的原因是 Microsoft.AspNet.Web.Optimization 有一个预发布的更新,因此它不会显示在您的更新列表中。做完这个过程,查看nuget包,你会看到它叫做Microsoft.AspNet.Web.Optimization.1.1.0-alpha1。这个 alpha 版本与新版本的 webgrease 相匹配,但如果你没有将包管理器配置为显示预发布包,你将永远看不到它的更新。
  • 这个答案解决了我的问题。卸载 Optimization 和 WebGrease,然后重新安装,似乎可以修复它。
  • 谢谢你! +1 但是@ss 尝试我们必须做的所有事情真的很痛苦......我不喜欢这一切。
  • -1 这在本地工作,但在部署时重新出现,所以要小心
  • 就我而言,我只需要执行第一步,即“Install-Package Microsoft.AspNet.Web.Optimization”,这就解决了我的问题。
【解决方案2】:
<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>

【讨论】:

  • 也为我工作。谢谢!
【解决方案3】:

您似乎参考了旧版(1.0.0.0?)程序集(假设当前版本是 1.3.0.0)。在这种情况下,您需要在 web.config 中使用assembly redirect,或者更好地重新编译您的二进制文件以使用最新版本。

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

【讨论】:

  • 我在 web.config 中有程序集重定向
【解决方案4】:

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

如果 packages.config 文件与您项目中的文件(包括正确的版本)不匹配,似乎不会安装或更新包。包管理器中没有错误,只是无法更新或安装包。

【讨论】:

    【解决方案5】:

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

    【讨论】:

      【解决方案6】:

      对我有用的绑定重定向:

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

      失败的蛋糕!

      【讨论】:

        【解决方案7】:

        我遇到了类似的问题,但它不是错误而是警告。将 WebGrease 更新到 1.3.0 后,构建将警告源放在声明中。在确保我的 web.config 文件中具有适当的程序集重定向之后,我最终创建了一个新的 _Layout.cshtml 视图并使用与之前完全相同的剃刀标记(复制/粘贴)保存在旧文件上。之后,警告消失了。

        我不确定警告的全部内容,但请尝试将代码复制到文件中,将其粘贴到新文件中并覆盖原始文件。

        如果有人知道为什么会这样,我会全力以赴。

        【讨论】:

          【解决方案8】:

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

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

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

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

          【讨论】:

            【解决方案9】:

            对于一个 Web API 项目,我正在研究真正有效的方法如下:

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

            2. 现在重新安装它,点击 NuGet 的在线选项卡并搜索 Microsoft.AspNet.Web.Optimization

            现在一切都按预期进行。

            【讨论】:

              【解决方案10】:

              感谢@roadsunknown。在我的主机冻结后,我的配置被破坏了,从而导致我的虚拟机无法正常关闭。为了解决这个问题,我通过 NuGet 卸载了 Microsoft.AspNet.Web.Optimization,然后不得不删除 packages.config 中对 WebGrease 的引用,最后通过 NuGet 重新安装了 Microsoft.AspNet.Web.Optimization。

              【讨论】:

                【解决方案11】:

                为了解决这个问题,我所做的只是更新 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>
                

                干杯!!!

                【讨论】:

                  【解决方案12】:

                  这就是我的运行时部分的样子,它可以工作

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

                  【讨论】:

                    【解决方案13】:

                    与 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" />
                    

                    迂腐?也许吧,但它总是在细节中,对吧?这为我解决了问题。

                    无论如何,希望他们在下一次更新中做对。

                    【讨论】:

                      【解决方案14】:

                      就我而言,所有这些方法都不起作用。最后我通过包管理器卸载 Microsoft.AspNet.Web.Optimization 和 WebGrease 包来解决这个问题,然后我在记事本中打开我的项目文件(.csproj)并删除与这两个包相关的所有条目,结果是有问题。最后我再次通过包管理器安装这两个包并运行项目。现在一切正常。

                      【讨论】:

                        猜你喜欢
                        • 1970-01-01
                        • 1970-01-01
                        • 2015-05-24
                        • 1970-01-01
                        • 1970-01-01
                        • 1970-01-01
                        • 2011-10-07
                        • 2017-06-21
                        • 1970-01-01
                        相关资源
                        最近更新 更多