在WebForms中调试时关闭捆绑/缩小

时间:2014-04-03 20:35:23

标签: asp.net webforms bundle minify asp.net-optimization

我希望能够在生产环境中缩小/捆绑我的javascript文件,同时在本地调试时对其进行无限制/非捆绑;但是,VS2012中的默认WebForms站点似乎不允许它。

重现我的问题的步骤:

  1. 创建一个新的" ASP.NET Web窗体应用程序" (在我的情况下是c#)
  2. 在没有调试的情况下启动并在浏览器中查看资源
  3. 注意未公开的jquery / modernizr文件,但是捆绑/缩小了MsAjaxJSWebFormsJs
  4. web.config,默认情况下有:

    <compilation debug="true" targetFramework="4.5">
    

    我甚至尝试通过明确告诉BundleTable不要优化来修改Global.asax:

    void Application_Start(object sender, EventArgs e)
    {
        // Code that runs on application startup
        BundleTable.EnableOptimizations = false;
        BundleConfig.RegisterBundles(BundleTable.Bundles);
        AuthConfig.RegisterOpenAuth();
        RouteConfig.RegisterRoutes(RouteTable.Routes);
    }
    

    然而,我仍然得到不可判断的javascript文件:

    Chrome Dev tools (showing minified/bundled files)

    This site(我意识到是针对MVC)告诉我,web.config中的debug="true"或Global.asax中的BundleTable.EnableOptimizations = false;都应关闭该功能。 this site,( 用于WebForms并且是从第一个链接的),并没有提到将其关闭进行调试。

    我怎样(干净地)告诉我的项目只在缩小/捆绑时调试=&#34; false&#34;?

    (我使用的是ASP.NET 4.5)

    修改
    This questionthis question相似,但它们都只使用Scripts.Render()提供解决方案。有没有办法用模板化的ScriptManager方法来实现这个目的?

2 个答案:

答案 0 :(得分:6)

将以下代码添加到Application_Start方法中的Global.asax.cs文件中。这对我很有用。

#if DEBUG
       foreach (var bundle in BundleTable.Bundles)
       {
           bundle.Transforms.Clear();
       }
#endif

答案 1 :(得分:0)

之前我遇到过类似的问题。我把这段代码解决了我的问题

BundleTable.EnableOptimizations = false;

之后
BundleConfig.RegisterBundles(BundleTable.Bundles);