仅在调试模式下捆绑css / js

时间:2012-12-12 13:18:00

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

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

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

我想过使用像:

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

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

那么正确的方法是什么?

1 个答案:

答案 0 :(得分:2)

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

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>脚本路径开始,以及是否应该在发布模式下添加它们。

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

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

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