如何为MVC-3-converted-to-4 app添加对System.Web.Optimization的引用

Ian*_*vis 455 namespaces asp.net-mvc-4 asp.net-optimization

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

当我这样做时,我得到了红色的波浪形线条,上面写着:"你错过了一个装配参考吗?" 当我尝试添加引用,并单击对话框中的.NET选项卡时,从AZ排序,我没有看到System.Web.Optimization.

如何将此ref添加到我的项目中?谢谢.

mhu*_*mhu 724

Microsoft.Web.Optimization包现已过时.使用ASP.NET(MVC)4及更高版本,您应该安装Microsoft ASP.NET Web Optimization Framework:

  • nuget安装包:

    Install-Package Microsoft.AspNet.Web.Optimization
    
    Run Code Online (Sandbox Code Playgroud)
  • 在App_Start\BundleConfig.cs中创建和配置bundle:

    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")
            );
        }
    }
    
    Run Code Online (Sandbox Code Playgroud)
  • 从global.asax.cs中的Application_Start()调用RegisterBundles()函数:

    using System.Web.Optimization;
    
    protected void Application_Start() {
         ...
         BundleConfig.RegisterBundles(BundleTable.Bundles);
         ...
    }
    
    Run Code Online (Sandbox Code Playgroud)
  • 在view.cshtml中包含Optimization命名空间并呈现包:

    @using System.Web.Optimization
    
    @Scripts.Render("~/Scripts/jquery")
    @Scripts.Render("~/Scripts/knockout")
    
    Run Code Online (Sandbox Code Playgroud)

有关更多信息,请参见http://www.asp.net/mvc/overview/performance/bundling-and-minification

可以使用更新
版本1.1.x,阅读发行说明:https://www.nuget.org/packages/Microsoft.AspNet.Web.Optimization

  • 你的答案包括"使用System.Web.Optimization;",这正是提问者所询问的问题. (29认同)
  • @dave:好还是坏?要解决"缺少程序集引用",应按照答案中的说明安装Microsoft.AspNet.Web.Optimization. (9认同)
  • 在默认的MVC模板中,我可以使用Scripts类,而无需在页面顶部添加System.Web.Optimization命名空间.但在我的progect我得到错误"名称Scripts不存在".我怎么解决这个问题?在web.config中添加此命名空间没有帮助.编辑:重装解决方案有帮助,对不起:) (6认同)
  • 它没有过时.这就是我在Visual Studio 2012和ASP.NET(MVC)4的最终版本中使用它的方法. (5认同)
  • 你需要MVC4来使用它吗? (2认同)

Noe*_*ams 83

随着ASP.Net MVC 4的最终发布版本,方法如下:

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


M. *_*lah 16

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

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


ami*_*ine 14

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

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

注意:package文件夹与yousolution.sln文件位于同一级别


Myz*_*fer 11

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

卸载 - 打包Microsoft.AspNet.Web.Optimization

然后重新安装使用:

安装包Microsoft.AspNet.Web.Optimization

可以为你解决这个问题.


小智 6

通过Visual Studio 从NUGet安装它打开Visual Studio 2010,选择工具 - >库包管理器 - >包管理器控制台

这将打开conslve,粘贴

Install-Package Microsoft.AspNet.Web.Optimization 
Run Code Online (Sandbox Code Playgroud)

并输入.你完成了