ฉันจะเพิ่ม BundleConfig.cs ในโปรเจ็กต์ของฉันได้อย่างไร


101

ฉันมีโครงการ ASP.Net MVC และฉันต้องการที่จะใช้ bundling แต่ทุกอย่างที่ฉันสามารถค้นหาบนอินเทอร์เน็ตนำฉันไปเปิดBundleConfig.csในApp_Start- แต่ไฟล์นี้ไม่อยู่ในโครงการของฉัน ฉันมีเพียงแค่สามไฟล์ในโฟลเดอร์นั้น: FilterConfig, และRouteConfigWebApiConfig

ไม่ได้สร้างการกำหนดค่า Bundle เมื่อฉันสร้างโซลูชัน (IIRC เป็นโปรเจ็กต์ ASP.NET MVC เปล่าในตอนเริ่มต้น)

ดูเหมือนว่าสิ่งนี้จะทำได้ง่ายมาก แต่ฉันก็คิดไม่ออก

ป.ล. เพียงเพื่อชี้แจงให้ผู้ที่ไม่ได้อ่านอย่างใกล้ชิดนี่เป็นแอป MVC4 / .Net 4.5 ที่สร้างขึ้นตั้งแต่ต้น วิธีแก้ปัญหาถูกทำเครื่องหมายไว้ด้านล่าง


คุณหาไม่พบเนื่องจากสิ่งนี้รวมอยู่ในเทมเพลตโครงการ ASP.NET 4.5 เท่านั้น ฉันถือว่าคุณกำลังใช้ ASP.NET เวอร์ชันก่อนหน้า
Jason Roell


2
@ เลียมนสพ. ตามที่ระบุไว้อย่างชัดเจนในคำถามนี้เกี่ยวข้องกับแอปที่สร้างขึ้นใหม่ไม่ได้แปลงจาก MVC3 นอกจากนี้ยังค่อนข้างชัดเจนสำหรับวิธีเพิ่มไฟล์ BundleConfig.cs ไม่ใช่วิธีการเพิ่มการอ้างอิงไปยัง System.Web.Optimization (สิ่งที่ไม่จำเป็นโดยสิ้นเชิงในสถานการณ์ของคำถามนี้) ฉันต้องถือว่าคุณพยายามแสดงความคิดเห็นในคำถามที่แตกต่างกันโดยสิ้นเชิง
Maverick

@Liam - อันที่จริงฉันเห็นว่าบางทีคุณอาจสับสนกับคำตอบซึ่งรวมถึงขั้นตอน "เพิ่มแพคเกจ Microsoft.AspNet.Web.Optimization nuget ให้กับโครงการเว็บของคุณ" ซึ่งไม่ได้เป็นส่วนหนึ่งของการแก้ปัญหาข้างต้น วิธีแก้ปัญหาคือการเพิ่มไฟล์ BundleConfig.cs ฉันพูดสิ่งนี้ในความคิดเห็นเกี่ยวกับคำตอบ ... แต่ความคิดเห็นนั้น (และคนอื่น ๆ ทั้งหมดในคำตอบ) ดูเหมือนจะหายไป
Maverick

คำตอบ:


173

BundleConfigไม่มีอะไรมากไปกว่าการกำหนดค่าบันเดิลที่ย้ายไปยังไฟล์แยกต่างหาก เคยเป็นส่วนหนึ่งของรหัสเริ่มต้นแอป (ตัวกรองบันเดิลเส้นทางที่ใช้กำหนดค่าในคลาสเดียว)

ในการเพิ่มไฟล์นี้ก่อนอื่นคุณต้องเพิ่มMicrosoft.AspNet.Web.Optimizationแพ็คเกจ nuget ในโครงการเว็บของคุณ:

Install-Package Microsoft.AspNet.Web.Optimization

จากนั้นภายใต้โฟลเดอร์ App_Start สร้างไฟล์ cs ใหม่ชื่อBundleConfig.cs. นี่คือสิ่งที่ฉันมีในของฉัน (ASP.NET MVC 5 แต่ควรใช้กับ MVC 4):

using System.Web;
using System.Web.Optimization;

namespace CodeRepository.Web
{
    public class BundleConfig
    {
        // For more information on bundling, visit http://go.microsoft.com/fwlink/?LinkId=301862
        public static void RegisterBundles(BundleCollection bundles)
        {
            bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
                        "~/Scripts/jquery-{version}.js"));

            bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
                        "~/Scripts/jquery.validate*"));

            // Use the development version of Modernizr to develop with and learn from. Then, when you're
            // ready for production, use the build tool at http://modernizr.com to pick only the tests you need.
            bundles.Add(new ScriptBundle("~/bundles/modernizr").Include(
                        "~/Scripts/modernizr-*"));

            bundles.Add(new ScriptBundle("~/bundles/bootstrap").Include(
                      "~/Scripts/bootstrap.js",
                      "~/Scripts/respond.js"));

            bundles.Add(new StyleBundle("~/Content/css").Include(
                      "~/Content/bootstrap.css",
                      "~/Content/site.css"));
        }
    }
}

จากนั้นแก้ไข Global.asax ของคุณและเพิ่มการโทรRegisterBundles()ในApplication_Start():

using System.Web.Optimization;

protected void Application_Start()
{
    AreaRegistration.RegisterAllAreas();
    RouteConfig.RegisterRoutes(RouteTable.Routes);
    BundleConfig.RegisterBundles(BundleTable.Bundles);
}

คำถามที่เกี่ยวข้องอย่างใกล้ชิด: วิธีเพิ่มการอ้างอิงไปยัง System.Web.Optimization สำหรับแอป MVC-3-modified-to-4


2
นักเก็ตควรเพิ่มเวอร์ชันสำเร็จรูปของสิ่งนี้
niico

1

หากคุณใช้ "MVC 5" คุณอาจไม่เห็นไฟล์และคุณควรทำตามขั้นตอนเหล่านี้: http://www.techjunkieblog.com/2015/05/aspnet-mvc-empty-project-adding.html

หากคุณใช้ "ASP.NET 5" แสดงว่าหยุดใช้ "บันเดิลและการย่อขนาด" แทนแล้วจะถูกแทนที่ด้วย gulp, bower และ npm ข้อมูลเพิ่มเติมดูhttps://jeffreyfritz.com/2015/05/where-did-my-asp-net-bundles-go-in-asp-net-5/

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