【问题标题】:Bundling css/js only in debug mode仅在调试模式下捆绑 css/js
【发布时间】:2012-11-30 05:06:48
【问题描述】:

有没有办法让 MVC4 的捆绑系统在调试模式下只包含脚本/样式

例如,我有很多调试模式脚本可以帮助我调试系统。我显然不希望它们在系统处于发布模式时呈现。

我想过使用这样的块:

  bundles.Add(
    new ScriptBundle("mybundle")
    .Include(
      "~/scripts/foo.js",
      "~/scripts/bar.js"
      #if DEBUG
      ,"~/scripts/baz-debug.js"
      #endif
    )
  );

但调试模式应通过web.config 控制。

那么正确的做法是什么?

【问题讨论】:

  • 这个链接或许能帮到你stackoverflow.com/questions/12487742/…>

标签: c# asp.net-mvc-4 visual-studio-debugging asp.net-optimization bundling-and-minification


【解决方案1】:

要检查是否启用了调试,您可以使用:

HttpContext.Current.IsDebuggingEnabled

前提是 HttpContext 是可访问的。如果没有,更长的方法是这个:

var isDebug =(System.Web.Configuration.CompilationSection)ConfigurationManager.GetSection("system.web/compilation").Debug;

这两个建议都来自这篇文章:How do I check if Debug is enabled in web.config

我实际上有条件地添加模块的方法是首先创建一个Dictionary<string, bool> 的脚本路径以及是否应该在发布模式下添加它们。

当您调用程序时,如果调试为假,则只需将字典过滤为元素集合:

var includes = dict.Where(x => x.Value).Select(x => x.Key);

然后将结果传递给您的Include 语句。

【讨论】:

  • 您将在哪里检查IsDebuggingEnabled?捆绑系统最初注册在global.asax.cs我想,那你会在那里做吗?上下文在管道的早期就已经存在了吗?
  • 除非您在其他地方需要这些数据,否则我会在编译包含之前完成。
猜你喜欢
  • 2013-05-25
  • 2012-09-19
  • 1970-01-01
  • 2017-03-04
  • 2012-10-19
  • 1970-01-01
  • 1970-01-01
  • 2017-04-02
  • 2013-01-30
相关资源
最近更新 更多