Mvc4中_Layout.cshtml中Styles.Render调用出现WebGrease错误

7
我正在尝试将捆绑添加到我的Mvc4 Web项目中。 我所采取的步骤:
  1. 向我的项目添加对的引用
  2. 在我的_Layout.cshtml文件的标签内添加@Styles.Render("~/Content/css")
  3. 在Global.asax.cs中添加BundleConfig.RegisterBundles(BundleTable.Bundles);
  4. 将BundleConfig.cs添加到我的App_Start文件夹中,其中包括bundes.Add(new StyleBundle("~/Content/css").Include("~/Content/site.css"));
  5. 在我的Content文件夹中添加一个简单的site.css。
我在第2步中遇到的错误是“无法加载文件或程序集'WebGrease,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35'或其某个依赖项。 系统找不到指定的文件。”
请问我是否缺少DLL引用或其他内容?请注意,我最初是从一个空的Mvc4项目开始的。
2个回答

7
在过去的一天左右,我也遇到了这个问题,但是我找到了解决方案。基本上,您只需要更新“webgrease”即可。
以下是我更新webgrease的步骤:
  1. 在解决方案资源管理器中右键单击项目解决方案。
  2. 单击“管理解决方案的NuGet软件包”
  3. 转到左侧的更新部分
  4. 搜索“WebGrease”
  5. 然后更新“WebGrease”
当我构建我的解决方案时,这对我有用。

1
我在将ASP.NET MVC 5添加到我的旧版ASP.NET Web应用程序(运行WebForms)后遇到了同样的问题。我想在MVC平台上添加新功能并构建它们,因此让MVC和传统Web应用程序并存非常重要。我在这里写下答案,因为我在stackoverflow和其他地方找到的所有解决方案,包括您正在阅读的主题所选的解决方案,都没有帮助我。也许我的发现会帮助那里的某个人...
当我将MVC 5添加到Web应用程序项目中时,它安装了一堆引用,例如System.Web.Mvc,System.Web.Razor等。还安装了一个名为Microsoft.AspNet.Web.Optimization的NuGet包,其中包含对WebGrease的引用;我们遇到问题的引用。
在我的Web项目中安装的Optimization dll版本是Microsoft.AspNet.Web.Optimization 1.1.3,这是目前最新的版本。它附带了WebGrease版本1.5.2。
有趣的是,在_Layout.cs中执行@Styles.Render(“〜/Content / css”)语句时收到的错误消息提到了WebGrease 1.5.1版本。我不知道它从哪里获取了1.5.1版本,因为我的Web项目中安装了1.5.2版本。我尝试卸载和重新安装WebGrease,尝试将WebGrease升级到最新版本(1.6.5135)。我确定这些dll没有安装在GAC中(它们没有)。我删除了“C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Temporary ASP.NET Files \”中的所有临时文件,但都无济于事。
我使用名为Fuslogvw.exe的程序记录了我的Web应用程序的所有绑定信息,希望能找到一个逻辑原因,解释为什么我的应用程序坚持尝试加载WebGrease的旧版本,而这个版本已经不存在了。有趣的是,日志的输出向我展示了应用程序正在做什么,但不幸的是没有告诉我为什么会这样。日志告诉我,尽管我已经安装了Microsoft.AspNet.Web.Optimization 1.1.3版和WebGrease 1.5.2版,但它仍然尝试加载Microsoft.AspNet.Web.Optimization 1.1.0.0版,该版本也带有旧版本的WebGrease。为什么会这样呢?我不知道,因为我从来没有在我的PC上添加过Optimization到任何项目中。

我的解决方案是先删除Microsoft.AspNet.Web.Optimization和WebGrease(按照顺序),然后在Package Manager Console中运行以下命令来安装Microsoft.AspNet.Web.Optimization 1.1.0版:

Install-Package Microsoft.AspNet.Web.Optimization -Version 1.1.0

这导致安装了WebGrease版本1.3.0,当加载使用_Layout.cshtml页面的MVC razor视图时没有出现任何问题。
对于那些感兴趣的人:下面是由Fuslogvw.exe生成的日志输出,其中清楚地说明它尝试加载不存在的Optimization 1.1.0版本:
*** Assembly Binder Log Entry  (26.11.2018 @ 13:19:59) ***

The operation failed.
Bind result: hr = 0x80131040. No description available.

Assembly manager loaded from:  C:\Windows\Microsoft.NET\Framework64\v4.0.30319\clr.dll
Running under executable  c:\windows\system32\inetsrv\w3wp.exe
--- A detailed error log follows. 

=== Pre-bind state information ===
LOG: DisplayName = WebGrease, Version=1.5.1.25624, Culture=neutral, PublicKeyToken=31bf3856ad364e35
 (Fully-specified)
LOG: Appbase = file:///C:/Projects/MyProject/Web/
LOG: Initial PrivatePath = C:\Projects\MyProject\Web\bin
LOG: Dynamic Base = C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\myproject\1db399c5
LOG: Cache Base = C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\myproject\1db399c5
LOG: AppName = 3f7f1cb1
Calling assembly : System.Web.Optimization, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35.
===
LOG: This bind starts in default load context.
LOG: Using application configuration file: C:\Projects\MyProject\Web\web.config
LOG: Using host configuration file: C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet.config
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework64\v4.0.30319\config\machine.config.
LOG: Post-policy reference: WebGrease, Version=1.5.1.25624, Culture=neutral, PublicKeyToken=31bf3856ad364e35
LOG: GAC Lookup was unsuccessful.
LOG: Attempting download of new URL file:///C:/Windows/Microsoft.NET/Framework64/v4.0.30319/Temporary ASP.NET Files/ipmvcang/1db399c5/3f7f1cb1/WebGrease.DLL.
LOG: Attempting download of new URL file:///C:/Windows/Microsoft.NET/Framework64/v4.0.30319/Temporary ASP.NET Files/ipmvcang/1db399c5/3f7f1cb1/WebGrease/WebGrease.DLL.
LOG: Attempting download of new URL file:///C:/Projects/MyProject/Web/bin/WebGrease.DLL.
LOG: Assembly download was successful. Attempting setup of file: C:\Projcets\MyProject\Web\bin\WebGrease.dll
LOG: Entering download cache setup phase.
LOG: Assembly Name is: WebGrease, Version=1.6.5135.21930, Culture=neutral, PublicKeyToken=31bf3856ad364e35
WRN: Comparing the assembly name resulted in the mismatch: Minor Version
ERR: The assembly reference did not match the assembly definition found.
ERR: Setup failed with hr = 0x80131040.
ERR: Failed to complete setup of assembly (hr = 0x80131040). Probing terminated.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接