[asp.net] ASP.NET 번들 축소를 비활성화하는 방법

내가 가진 debug="true"내 모두 의 Web.config (들) , 그리고 난 그냥 내 번들이 축소 된 싶지는 않지만 내가 아무것도 사용하지 않도록 것 같다. 시도했습니다 enableoptimisations=false, 여기 내 코드가 있습니다 :

//Javascript
bundles.Add(new ScriptBundle("~/bundles/MainJS")
            .Include("~/Scripts/regular/lib/mvc/jquery.validate.unobtrusive.js*")
            .Include("~/Scripts/regular/lib/mvc/jquery.validate*")
            .Include("~/Scripts/regular/lib/bootstrap.js")
            .IncludeDirectory("~/Scripts/regular/modules", "*.js", true)
            .IncludeDirectory("~/Scripts/regular/pages", "*.js", true)
            .IncludeDirectory("~/Scripts/regular/misc", "*.js", true));

//CSS
bundles.Add(new StyleBundle("~/bundles/MainCSS")
            .Include("~/Content/css/regular/lib/bootstrap.css*")
            .IncludeDirectory("~/Content/css/regular/modules", "*.css", true)
            .IncludeDirectory("~/Content/css/regular/pages", "*.css", true))



답변

당신이 가지고 있다면 debug="true"Web.config를 하고 사용하는 Scripts/Styles.Render페이지의 번들을 참조하려면, 그 번들 및 축소를 모두 해제해야합니다. BundleTable.EnableOptimizations = false디버그 참 / 거짓 플래그와 상관없이 항상 번들링과 축소를 모두 해제합니다.

Scripts/Styles.Render헬퍼를 사용하지 않습니까? 를 통해 번들에 대한 참조를 직접 렌더링하는 경우BundleTable.Bundles.ResolveBundleUrl() 항상 축소 / 번들 된 컨텐츠가 제공됩니다.


답변

조건부 컴파일 지시문은 친구입니다.

#if DEBUG
            var jsBundle = new Bundle("~/Scripts/js");
#else
            var jsBundle = new ScriptBundle("~/Scripts/js");
#endif


답변

비활성화 번들 및 축소를 위해 그냥이 당신 넣어 에서 .aspx 파일 (이 뜻을 비활성화 최적화를하더라도 debug=true에서 의 Web.config )

vb.net :

System.Web.Optimization.BundleTable.EnableOptimizations = false

c # .net

System.Web.Optimization.BundleTable.EnableOptimizations = false;

당신이 넣을 경우 EnableOptimizations = true이 번들 및 축소하세요 않더라도 debug=true에서 의 Web.config


답변

변환을 지우면 번들에서 축소를 끌 수 있습니다.

var scriptBundle = new ScriptBundle("~/bundles/scriptBundle");
...
scriptBundle.Transforms.Clear();

개인적으로 모든 스크립트를 단일 파일로 묶고 싶지만 디버깅 단계에서 가독성이 필요하다는 것을 개인적으로 알았습니다.


답변

나는 이러한 제안을 많이 시도했지만 작동하지 않는 것 같습니다. 나는 이것이 내 실수라는 것을 알기 위해 꽤 많은 시간을 낭비했습니다.

@Scripts.Render("/bundles/foundation")

내가 시도한 것이 무엇이든 항상 자바 스크립트를 축소하고 번들로 묶었습니다. 대신, 나는 이것을 사용해야했다 :

@Scripts.Render("~/bundles/foundation")

여분의 ‘~’가 해냈습니다. 한 번만 다시 제거하여 실제로 있는지 확인했습니다. 내가 바라던 시간에 적어도 한 사람을 구할 수 있었으면 좋겠다.


답변

여러 답변을 결합하면 ASP.NET MVC 4에서 작동합니다.

        bundles.Add(new ScriptBundle("~/Scripts/Common/js")
            .Include("~/Scripts/jquery-1.8.3.js")
            .Include("~/Scripts/zizhujy.com.js")
            .Include("~/Scripts/Globalize.js")
            .Include("~/Scripts/common.js")
            .Include("~/Scripts/requireLite/requireLite.js"));

        bundles.Add(new StyleBundle("~/Content/appLayoutStyles")
            .Include("~/Content/AppLayout.css"));

        bundles.Add(new StyleBundle("~/Content/css/App/FunGrapherStyles")
            .Include("~/Content/css/Apps/FunGrapher.css")
            .Include("~/Content/css/tables.css"));

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


답변

축소 (및 기타 기능)를 수동으로 제어하는 ​​간단한 방법도 있습니다. 다음 과 같이 사용하는 새로운 CssMinify () 변환기입니다 .

// this is in case when BundleTable.EnableOptimizations = false;
var myBundle = new StyleBundle("~/Content/themes/base/css")
    .Include("~/Content/themes/base/jquery.ui.core.css" /* , ... and so on */);
myBundle.Transforms.Add(new CssMinify());
bundles.Add(myBundle);

// or you can remove that transformer in opposite situation
myBundle.Transforms.Clear();

번들 일부 특수 부분을 축소하기를 원할 때 편리합니다. 예를 들어, 과도한 브라우저 요청을 많이받는 표준 (jQuery) 스타일을 사용하고 있지만 자신의 스타일 시트를 단순화하지 않으려 고합니다. (자바 스크립트와 동일).