461

我正在尝试在我最近从 MVC 3 转换为 MVC 4 beta 的项目中使用新的捆绑功能。它需要 global.asax 中的一行代码BundleTable.Bundles.RegisterTemplateBundles();,它需要using System.Web.Optimization;在顶部。

当我这样做时,我会看到红色的波浪线,上面写着“您是否缺少程序集引用?” 当我尝试添加引用并单击对话框中的 .NET 选项卡时,从 AZ 排序,我没有看到System.Web.Optimization.

如何将此引用添加到我的项目中?

4

7 回答 7

737

更新
版本 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-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.cs 中的 Application_Start() 调用 RegisterBundles() 函数:

    using System.Web.Optimization;
    
    protected void Application_Start() {
         ...
         BundleConfig.RegisterBundles(BundleTable.Bundles);
         ...
    }
    
  • 在您的 view.cshtml 中包含优化命名空间并呈现包:

    @using System.Web.Optimization
    
    @Scripts.Render("~/Scripts/jquery")
    @Scripts.Render("~/Scripts/knockout")
    

有关详细信息,请参阅http://www.asp.net/mvc/overview/performance/bundling-and-minification

于 2012-06-11T13:06:05.633 回答
83

对于 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 中,将包含添加到上一步中创建的包中:

    @Scripts.Render("~/MyBundle")
    

在调试模式下,您目录中的所有脚本文件将单独呈现;在发布模式下,它们将被捆绑和缩小。

于 2012-03-04T18:39:36.630 回答
17

从 nuget 更新(重新安装)软件包,您可以使用以下命令:

update-Package Microsoft.AspNet.Web.Optimization -reinstall

于 2015-01-22T21:35:57.357 回答
14

在我的情况下,这是一个 tfs 问题,因为 tfs 排除了二进制文件,所以 Nugget PM 找到已安装的 nugget 并且不更新库如果您有类似的问题:

  • 转到源代码控制
  • 导航到 ..\packages\Microsoft.Web.Optimization
  • 添加 lib 文件夹(取消选中排除二进制扩展名)
  • 更新您的解决方案并从路径中添加 dll 引用

注意:包文件夹与 yousolution.sln 文件在同一级别

于 2012-11-14T14:52:37.740 回答
12

使用 nuget 在包管理器控制台中卸载 System.Web.Optimization,如下所示:

卸载包 Microsoft.AspNet.Web.Optimization

然后使用重新安装:

安装包 Microsoft.AspNet.Web.Optimization

可以为你解决这个问题。

于 2014-05-07T09:13:00.253 回答
6

通过 Visual Studio从NUGet安装它打开 Visual Studio 2010 ,选择 Tools-> Library Package Manager-> Package Manager Console

这将打开conslve,粘贴

Install-Package Microsoft.AspNet.Web.Optimization 

并进入。你完成了

于 2013-07-16T12:40:43.017 回答
2

在 Global.asax application_start 中设置(在 RELEASE 模式等):

BundleTable.EnableOptimizations = **true**;

在DEBUG 模式下启用缩小并更改为 false 以单独呈现所有脚本和样式文件。

于 2013-05-29T06:53:31.017 回答