【问题标题】:How to add reference to System.Web.Optimization for MVC-3-converted-to-4 app如何为 MVC-3-converted-to-4 应用添加对 System.Web.Optimization 的引用
【发布时间】:2012-03-17 13:37:42
【问题描述】:

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

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

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

【问题讨论】:

  • 我已经进行了优化,但它导致 ScriptBundle 出现问题,我只能在卸载 Opti... 然后重新安装后才能解决。
  • @Myzifer 您应该提交您的评论作为答案。将System.Web.Optimization 节点重新添加到我的引用中是唯一对我有用的方法。
  • @myzifer 对于这种奇怪的行为,您的答案是正确的。 唯一 可以为我解决此问题的方法是运行 nuget cmd 行:UnInstall-Package Microsoft.AspNet.Web.Optimization,然后立即运行安装:Install-Package Microsoft.AspNet。网络优化。试图用 VStudio 2013 让它在我的家用电脑上工作数周,但永远无法得到它。非常感谢。
  • @Myzifer - 也为我工作 - 从 VSOnline “签出”一个项目并出现此错误 - 卸载然后重新安装 - 20 秒工作 - 谢谢 - 这是你很容易失去的愚蠢问题之一一天到!

标签: asp.net-mvc-4 namespaces asp.net-optimization


【解决方案1】:

更新
版本 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

【讨论】:

  • 你需要 MVC4 来使用它吗?
  • 它没有过时。这就是我在 Visual Studio 2012 和 ASP.NET (MVC) 4 的最终版本中使用它的方式。
  • 您的回答包括“使用 System.Web.Optimization;”,这正是提问者所问的问题。
  • @dave:这是好事还是坏事?要解决“缺少程序集参考”,应按照答案中的说明安装 Microsoft.AspNet.Web.Optimization。
  • 在默认的 MVC 模板中,我可以使用 Scripts 类,而无需在页面顶部添加 System.Web.Optimization 命名空间。但在我的项目中,我收到错误“名称脚本不存在”。我该如何解决?在 web.config 中添加这个命名空间没有帮助。编辑:重新加载解决方案有帮助,对不起:)
【解决方案2】:

对于 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")
    

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

【讨论】:

  • 正确,这个版本包含它。其他版本没有。
  • 我不明白为什么这对我不起作用。我已经尝试过这种方式并在 BundleConfig.cs 中创建包,但是当我在视图中添加 @Styles.Render("~/CssBundle") 时,我得到的只是 这给了我 404。知道为什么吗?
  • @vsdev 我知道这已经晚了 4 年,但您可能需要检查您的 BundleConfig.cs 以确保您正确添加它 - 此答案中的行仅引用 ".js"文件。在public static void RegisterBundles(BundleCollection bundles) { ... } 中,您应该能够执行bundles.Add(new StyleBundle("~/CssBundle")); 之类的操作,它会抓取您CssBundle 文件夹中的所有CSS 文件。您不希望 ScriptBundle 像 CSS 文件示例中那样。
【解决方案3】:

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

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

【讨论】:

    【解决方案4】:

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

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

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

    【讨论】:

      【解决方案5】:

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

      卸载包 Microsoft.AspNet.Web.Optimization

      然后使用重新安装:

      安装包 Microsoft.AspNet.Web.Optimization

      可以为你解决这个问题。

      【讨论】:

      • 不确定这如何回答问题?
      • @TylerD87 很简单,它解决了一组特定的情况,我不是唯一一个发现这种情况的人,如果您阅读有关问题的 cmets,您会注意到 Snekse 在 4 月说2014 年 2 月 29 日在 16:39,他们需要遵循我给出的特定指示,并且在下面的其他人发布了很多相同的内容,并且得到了支持。
      • 也许编辑你的答案,让它看起来更像一个答案?我什至没有意识到您正在回答这个问题或您的建议。
      • @TylerD87 这个问题是关于优化的,我的回答是关于优化的,它解决了问题中详述的问题,并且已经得到至少 2 人的认可,如果您愿意提供有关您如何使用的详细信息'已经误解了我的答案,以及我如何才能最好地更改/修改它以向更广泛的受众提供更清晰的答案,然后我很乐意做出这样的改变,但如果没有建设性的批评,我无法确定我可以如何改进。
      • 嗨,我提出了一个编辑建议,让我所指的内容更清楚。通读顶部的 cmets 后,我发现这实际上是有效的建议,但您的答案呈现方式并不清楚您的实际建议。
      【解决方案6】:

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

      这将打开conslve,粘贴

      Install-Package Microsoft.AspNet.Web.Optimization 
      

      然后输入。你就完成了

      【讨论】:

        【解决方案7】:

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

        BundleTable.EnableOptimizations = **true**;
        

        启用缩小并在调试模式中更改为 false 以单独渲染所有脚本和样式文件。

        【讨论】:

        • 通过web.config更容易控制。如果设置了&lt;compilation debug="true" /&gt;(在构建调试版本时这是非常标准的),则不会进行任何优化。通常,此设置会在发布版本中自动删除。 BundleTable.EnableOptimizations 只能用于否决 web.config。更多信息:asp.net/mvc/tutorials/mvc-4/bundling-and-minification(搜索“控制捆绑和缩小”)
        • 这对我帮助很大,谢谢。我不得不禁用它,因为使用 dotless + RequestReduce 会使包变得乱七八糟。
        • 这个设置真的取决于你是在你的包中使用预先缩小的文件,还是使用非缩小的文件——如果你在调试或发布,除了最佳实践对于这些模式中的每一种 - 例如,您可以拥有一个正在调试模式下编译的项目,但是您有 BundleTable.EnableOptimizations = false; 因为在您的 BundleConfig.cs 中,您指定了所有预压缩文件并且您不想要它对它们进行另一次最小化。
        • 如果他们在 BundleConfig.cs 中使用非预先最小化的文件(即没有 .min 的文件),这实际上只是对某人问题的答案。如果他们使用 .min 文件并将其设置为 true,就会出现问题。
        猜你喜欢
        • 2012-12-01
        • 2012-03-10
        • 1970-01-01
        • 2012-08-16
        • 2013-09-29
        • 1970-01-01
        • 1970-01-01
        • 2014-02-08
        相关资源
        最近更新 更多