เปิดใช้งานการรวมและการย่อขนาดในโหมดดีบักใน ASP.NET MVC 4


112

ฉันไม่อยากจะเชื่อเลยว่าฉันไม่พบคำถามอื่น ๆ เกี่ยวกับเรื่องนี้ แต่จะเปิดใช้งานบันเดิลในโหมดดีบักได้อย่างไร ฉันรู้วิธีเปิดใช้งานสำหรับโหมดรีลีส แต่ในโหมดดีบักฉันไม่พบวิธีเปิดใช้งานบันเดิล

เป็นไปได้หรือว่าฉันขาดอะไรไป?

คำตอบ:


214

คุณสามารถเปิดใช้งานได้โดยเพิ่ม

BundleTable.EnableOptimizations = true;

ในเมธอด RegisterBundles ของคุณ (คลาส BundleConfig ในโฟลเดอร์ App_Start)

ตรวจสอบhttp://www.asp.net/mvc/tutorials/mvc-4/bundling-and-minificationสำหรับข้อมูลเพิ่มเติม

คุณยังสามารถเปลี่ยน web.config ของคุณ:

<system.web>
    <compilation debug="false" />
</system.web>

แต่สิ่งนี้จะปิดใช้งานโหมดดีบักทั้งหมดดังนั้นฉันขอแนะนำตัวเลือกแรก

สุดท้ายเพื่อให้ได้สิ่งที่ดีที่สุดของทั้งสองโลกให้ใช้ #if คอมไพเลอร์คำสั่งดังนี้:

#if DEBUG
            BundleTable.EnableOptimizations = false;
#else
            BundleTable.EnableOptimizations = true;
#endif

4
ฉันจะก้าวไปอีกขั้นและเพิ่มส่วนการกำหนดค่าที่กำหนดเองใน web.config ของคุณ (หรืออย่างน้อยรายการ AppSetting) ด้วยวิธีนี้คุณสามารถเลือกเปิด / ปิดการเพิ่มประสิทธิภาพได้โดยไม่ต้องสร้างใหม่
Joe the Coder

1
หรือใช้#if DEBUG& #if !DEBUGprecompiler statement
Liam

โปรดจำไว้ว่าสิ่งนี้จะแทนที่การกำหนดค่าdebug="true"ดังนั้นการเพิ่มประสิทธิภาพจะถูกเปิดใช้งานหรือปิดใช้งานเสมอหากคุณฮาร์ดโค้ดค่านี้
Liam

1
หรือใช้ MVC แบบ "verbose"if (HttpContext.Current.IsDebuggingEnabled) { BundleTable.EnableOptimizations = false; } else { BundleTable.EnableOptimizations = true; }
Tiramonium

หากคุณชอบตัวเลือกการกำหนดค่าเว็บคุณสามารถตั้งค่าการกำหนดค่าเว็บได้หลายรายการต่อการกำหนดค่าดังนั้นการดีบักการกำหนดค่าเว็บจะเป็นจริงและการเปิดตัวจะเป็นเท็จ docs.microsoft.com/en-us/aspnet/web-forms/overview/deployment/…
Matthew Ellison


-2

ใน Global.asax เพิ่ม BundleConfig.RegisterBundles(BundleTable.Bundles);

 protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();

            WebApiConfig.Register(GlobalConfiguration.Configuration);
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles); // add this
        }

-5

เว็บไซต์อย่างเป็นทางการ MSรัฐในขณะที่การแก้จุดบกพร่องก็ไม่ได้เป็นไปได้ที่จะเปิดใช้งานได้ ฉันคิดว่าเหตุผลคือการดีบักง่ายกว่าในขณะที่ปิดใช้งาน หากคุณต้องการทดสอบผลกระทบต่อแอปพลิเคชันของคุณคุณต้องตั้งค่า<compilation debug="true" />ใน Web.config

@ Hebe: เพื่ออ้างถึงหน้า MS

ง่ายต่อการดีบัก JavaScript ของคุณในสภาพแวดล้อมการพัฒนา (โดยที่องค์ประกอบการคอมไพล์ในไฟล์ Web.config ถูกตั้งค่าเป็น debug = "true") เนื่องจากไฟล์ JavaScript ไม่รวมหรือย่อขนาด


ในกรณีของฉันฉันแค่ต้องการดีบักโค้ด C # ของแบ็กเอนด์และเนื่องจากวิธีการตั้งค่าแอปพลิเคชันของเราเราจำเป็นต้องมีบันเดิลเพื่อทำงานให้สไตล์ชีตและสคริปต์ทั้งหมดโหลดได้อย่างถูกต้อง
MLowijs

3
@Ennosuke - แม้ว่าอาจจะง่ายกว่าในการดีบัก แต่บางครั้งก็มีข้อบกพร่องของ Javascript ที่เกิดจากกระบวนการลดขนาดที่ต้องการให้คุณสามารถเรียกใช้สคริปต์ที่ย่อขนาดได้ในเครื่อง
Joe the Coder
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.