如何添加对MVC-3-converted-to-4应用程序的System.Web.Optimization的引用
我正在尝试使用最近从MVC 3转换到MVC 4testing版的项目中的新捆绑function。 它需要在global.asax中的一行代码, BundleTable.Bundles.RegisterTemplateBundles();
,这需要using System.Web.Optimization;
在顶部。
当我这样做的时候,我会看到红色的波浪线,上面写着“你错过了一个assembly参考吗?” 当我尝试添加引用,然后单击对话框中的.NET选项卡,从AZsorting,我没有看到System.Web.Optimization
。
我如何将这个参考添加到我的项目? 谢谢。
Microsoft.Web.Optimization包现在已经过时。 使用ASP.NET(MVC)4和更高版本,您应该安装Microsoft ASP.NET Web Optimization Framework:
-
从nuget安装软件包:
Install-Package Microsoft.AspNet.Web.Optimization
-
在App_Start \ BundleConfig.cs中创build和configuration软件包:
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.cs中的Application_Start()调用RegisterBundles()函数:
using System.Web.Optimization; protected void Application_Start() { ... BundleConfig.RegisterBundles(BundleTable.Bundles); ... }
-
在您的view.cshtml中包含Optimization命名空间并呈现包(s):
@using System.Web.Optimization @Scripts.Render("~/Scripts/jquery") @Scripts.Render("~/Scripts/knockout")
有关更多信息,请参阅http://www.asp.net/mvc/overview/performance/bundling-and-minification
更新
版本1.1.x可用,请阅读发行说明: http : //aspnetoptimization.codeplex.com/releases/view/101096
随着ASP.Net MVC 4的最终发布版本的方法如下:
-
通过nuget安装Microsoft.AspNet.Web.Optimization(因为它没有被框架安装)
install-package Microsoft.AspNet.Web.Optimization
-
在Global.asax Application_Start中创build包:
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中添加一个包含在最后一步创build的包:
@Scripts.Render("~/MyBundle")
在debugging模式下,目录中的所有脚本文件都将单独呈现; 在发布模式下,它们将被捆绑和缩小。
在我的情况下,这是一个tfs问题,因为tfs排除二进制文件,所以块金find安装的金块,不更新库如果你有类似的问题:
- 去源代码pipe理
- 导航到.. \ packages \ Microsoft.Web.Optimization
- 添加lib文件夹(取消选中排除二进制扩展名)
- 更新您的解决scheme,并从path添加dll引用
注意:包文件夹与yousolution.sln文件位于同一级别
从nuget更新(重新安装)软件包,可以使用以下命令:
update-Package Microsoft.AspNet.Web.Optimization -reinstall
使用nuget在包pipe理器控制台中卸载System.Web.Optimization,如下所示:
卸载软件包Microsoft.AspNet.Web.Optimization
然后重新安装使用:
安装包Microsoft.AspNet.Web.Optimization
可以为你解决这个问题。
通过Visual Studio从NUGet安装它打开Visual Studio 2010,selectTools-> Library Package Manager-> Package Manager Console
这将打开conslve,粘贴
Install-Package Microsoft.AspNet.Web.Optimization
并进入。 你完成了
在Global.asax application_start(在RELEASE模式等)中设置:
BundleTable.EnableOptimizations = **true**;
在DEBUG模式下启用缩小和更改为false以单独呈现所有脚本和样式文件。