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

Nee*_*ude 43 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")
Run Code Online (Sandbox Code Playgroud)

如何解决此错误.

sec*_*oat 65

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

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
Run Code Online (Sandbox Code Playgroud)

然后复制〜/ Views/Shared/_Layout.cshtml的内容,删除_Layout.cshtml文件,重新创建并重新粘贴内容.

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

  • 这是正确的答案.这样做的原因是因为Microsoft.AspNet.Web.Optimization具有预发布中的更新,因此它不会显示在更新列表中.完成此过程后,查看nuget包,您将看到它被称为Microsoft.AspNet.Web.Optimization.1.1.0-alpha1.这个alpha版本与新版本的webgrease相匹配,但是如果你没有配置包管理器来显示预发布包,你将永远不会看到它的更新. (3认同)
  • 谢啦!+1但是@ss真的很难实验我们要做的所有事情......我不喜欢这一切. (3认同)

Hri*_*iju 17

<assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-1.3.0.0" newVersion="1.3.0.0" /> </dependentAssembly>
Run Code Online (Sandbox Code Playgroud)

将上面的代码更改Web.config为以下内容

<assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-1.3.0.0"/> </dependentAssembly>
Run Code Online (Sandbox Code Playgroud)


Ale*_*kov 4

看起来您引用了较旧的(1.0.0.0?)版本的程序集(假设当前版本是 1.3.0.0)。在这种情况下,您需要在 web.config 中进行程序集重定向,或者更好的是重新编译二进制文件以使用最新版本。

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

  • 我在 web.config &lt;dependentAssembly&gt; &lt; assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35"culture="neutral" /&gt; &lt;bindingRedirect oldVersion="0.0.0.0-1.3.0.0" newVersion="1.3.0.0" 中有程序集重定向/&gt; &lt;/dependentAssembly&gt; (3认同)