提问人:Ian Davis 提问时间:2/28/2012 最后编辑:TylerHIan Davis 更新时间:11/7/2019 访问量:405326
如何为 MVC-3-converted-to-4 应用添加对 System.Web.Optimization 的引用
How to add reference to System.Web.Optimization for MVC-3-converted-to-4 app
问:
我正在尝试在我最近从 MVC 3 转换为 MVC 4 beta 的项目中使用新的捆绑功能。它需要 global.asax 中的一行代码,这需要在顶部。BundleTable.Bundles.RegisterTemplateBundles();
using System.Web.Optimization;
当我这样做时,我得到红色的波浪线,上面写着:“你是否缺少一个程序集引用?当我尝试添加引用,然后单击对话框中的 .NET 选项卡,从 AZ 排序时,我没有看到 .System.Web.Optimization
如何将此引用添加到我的项目中?
答:
在 ASP.Net MVC 4 的最终发布版本中,方法如下:
通过 nuget 安装 Microsoft.AspNet.Web.Optimization(因为它不是由框架安装的)
install-package Microsoft.AspNet.Web.Optimization
在 Global.asax 中创建捆绑包Application_Start:
var scripts = new ScriptBundle("~/MyBundle"); scripts.IncludeDirectory("~/Scripts/MyDirectory", "*.js"); BundleTable.Bundles.Add(scripts);
将“System.Web.Optimization”命名空间添加到“Views”web.config 中:
<pages pageBaseType="System.Web.Mvc.WebViewPage"> <namespaces> <add namespace="System.Web.Optimization" /> </namespaces> </pages>
在 view.cshtml 中,将包含添加到在上一步中创建的捆绑包中:In your view.cshtml add an include to the bundle created in the last step:
@Scripts.Render("~/MyBundle")
在调试模式下,目录中的所有脚本文件都将单独呈现;在发布模式下,它们将被捆绑和缩小。
评论
".js"
public static void RegisterBundles(BundleCollection bundles) { ... }
bundles.Add(new StyleBundle("~/CssBundle"));
CssBundle
ScriptBundle
更新
版本 1.1.x 可用,请阅读发行说明:https://www.nuget.org/packages/Microsoft.AspNet.Web.Optimization
Microsoft.Web.Optimization 包现已过时。使用 ASP.NET (MVC) 4 及更高版本,应安装 Microsoft ASP.NET Web 优化框架:
从 nuget 安装包:Install the package from nuget:
Install-Package Microsoft.AspNet.Web.Optimization
在 App_Start\BundleConfig 中创建和配置捆绑包.cs:
public class BundleConfig { public static void RegisterBundles(BundleCollection bundles) { bundles.Add(new ScriptBundle("~/Scripts/jquery").Include( "~/Scripts/Lib/jquery/jquery-{version}.js", "~/Scripts/Lib/jquery/jquery.*", "~/Scripts/Lib/jquery/jquery-ui-{version}.js") ); bundles.Add(new ScriptBundle("~/Scripts/knockout").Include( "~/Scripts/Lib/knockout/knockout-{version}.js", "~/Scripts/Lib/knockout/knockout-deferred-updates.js") ); } }
从 global.asax 中的 Application_Start() 调用 RegisterBundles() 函数.cs:
using System.Web.Optimization; protected void Application_Start() { ... BundleConfig.RegisterBundles(BundleTable.Bundles); ... }
在 view.cshtml 中,包括 Optimization 命名空间并呈现捆绑包:
@using System.Web.Optimization @Scripts.Render("~/Scripts/jquery") @Scripts.Render("~/Scripts/knockout")
有关更多信息,请参阅 http://www.asp.net/mvc/overview/performance/bundling-and-minification
评论
就我而言,这是一个 tfs 问题,因为 tfs 排除了二进制文件,因此 Nugget PM 会找到已安装的 nugget 并且不更新库 如果您有类似的问题:
- 转到源代码管理
- 导航到 ..\packages\Microsoft.Web.Optimization
- 添加 lib 文件夹(取消选中排除二进制扩展名)
- 更新解决方案并从路径添加 dll 引用
注意:包文件夹与 yousolution.sln 文件处于同一级别
在 Global.asax application_start 中设置(在 RELEASE 模式下等):
BundleTable.EnableOptimizations = **true**;
在 DEBUG 模式下启用缩小并更改为 false,以单独呈现所有脚本和样式文件。
评论
<compilation debug="true" />
BundleTable.EnableOptimizations
BundleTable.EnableOptimizations = false;
通过 Visual Studio 从 NUGet 安装它 打开 Visual Studio 2010,选择“工具”->库包管理器->包管理器控制台
这将打开 conslve,粘贴
Install-Package Microsoft.AspNet.Web.Optimization
并输入。你就完成了
使用 nuget 在包管理器控制台中卸载 System.Web.Optimization,如下所示:
卸载包 Microsoft.AspNet.Web.Optimization
然后使用以下命令重新安装:
安装包 Microsoft.AspNet.Web.Optimization
可以为您解决这个问题。
评论
从 nuget 更新(重新安装)包,可以使用以下命令:
update-Package Microsoft.AspNet.Web.Optimization -reinstall
上一个:前缀双冒号“::”是什么意思?
下一个:内联命名空间有什么用?
评论
System.Web.Optimization