捆绑而不是捆绑在ASP.NET MVC中的生产和测试环境中

Bar*_*rka 5 javascript c# debugging asp.net-mvc bundling-and-minification

我正在使用ASP.NET Bundling机制:

            BundleTable.Bundles.Add(new ScriptBundle("~/Scripts/Master-js").Include(
                        "~/Scripts/respond.min.js",
                        "~/Scripts/jquery.form.js",
                       "~/Scripts/jquery.MetaData.js",
                        "~/Scripts/jquery.validate.js",
                        "~/Scripts/bootstrap.js",
                        "~/Scripts/jquery.viewport.js",
                        "~/Scripts/jquery.cookie.js"
                     ));
Run Code Online (Sandbox Code Playgroud)

如果构建在发布中,我希望这发生.如果构建是在调试中,我希望加载未缩小的单个文件,以便调试很容易.

我能够做到这一点的唯一方法是在我的视图中写下以下内容:

    <%  if(HttpContext.Current.IsDebuggingEnabled)
        {
            Response.Write("<script type='text/javascript' src='../../Scripts/respond.min.js'></script>");
            Response.Write("<script type='text/javascript' src='../../Scripts/jquery.form.js'></script>");
            Response.Write("<script type='text/javascript' src='../../Scripts/jquery.MetaData.js'></script>");
            Response.Write("<script type='text/javascript' src='../../Scripts/jquery.validate.js'></script>");
            Response.Write("<script type='text/javascript' src='../../Scripts/bootstrap.js'></script>");
            Response.Write("<script type='text/javascript' src='../../Scripts/jquery.viewport.js'></script>");
            Response.Write("<script type='text/javascript' src='../../Scripts/jquery.cookie.js'></script>");
        }
        else
        {
            Scripts.Render("~/Scripts/Master-js");
        }
%> 
Run Code Online (Sandbox Code Playgroud)

如你所见,我在这里重复一遍.有没有更好的办法?

Ste*_*n V 7

默认情况下,在Scripts.Render()视图上使用时,如果应用程序启用了调试(debug="true"在web.config中),则不会捆绑或缩小文件.此外,还将为该捆绑包中的每个资产呈现单个脚本标记.

您可以使用手动启用/禁用捆绑和缩小 System.Web.Optimization.BundleTable.EnableOptimizations