如何添加对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以单独呈现所有脚本和样式文件。