{version} ไวด์การ์ดใน MVC4 Bundle


155

ใน MVC 4 เรามีการรวมกลุ่ม ในขณะที่กำหนดบันเดิลเราสามารถใช้ wildcard เช่น * สำหรับไฟล์ทั้งหมดในโฟลเดอร์

ในตัวอย่างด้านล่าง-{version}หมายความว่าอย่างไร

public static void RegisterBundles(BundleCollection bundles)
{
    bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
        "~/Scripts/jquery-{version}.js"));
}

คำตอบ:


177

-{version}พื้นแผนที่เป็นรุ่นregex(\d+(?:\.\d+){1,3})หรือจะแม่นยำ:
การใช้*มีแนวโน้มที่จะคว้ามากเกินไปตัวอย่างเช่นหากคุณรวมกลุ่มjquery*ซึ่งจะรวมjquery-uiไว้ด้วยซึ่งอาจทำให้การสั่งซื้อเกิดความสับสน แต่การใช้jquery-{version}.jsจะช่วยให้คุณหลีกเลี่ยงการอัปเดตคำจำกัดความกลุ่มของคุณทุกครั้งที่คุณอัพเกรด jquery

สิ่งเพิ่มเติมที่ควรทราบ:

  • {version} ใช้งานได้เฉพาะในส่วนสุดท้ายของเส้นทาง - โดยทั่วไปแล้วชื่อไฟล์ - ไม่ใช่ไดเรกทอรี
  • jquery หลายรุ่นในโฟลเดอร์เดียวกันจะถูกไล่ตามทั้งหมด

2
สิ่งนี้จะทำงานกับอดีตหลายรุ่น: jquery อยู่ในโฟลเดอร์ได้อย่างไร
pavsaund

18
เป็น regex ดังนั้นมันจะรวมการแข่งขันทั้งหมดดังนั้นหากคุณมีหลายเวอร์ชันในไดเรกทอรีเดียวกันคุณอาจไม่ต้องการใช้สิ่งนี้
Hao Kung

3
โปรดทราบว่า {version} ดูเหมือนจะไม่ทำงานภายในเส้นทาง ที่ทำงานเรามีรุ่น bootstrap ในพา ธ (ไม่ใช่ในชื่อไฟล์) ดังนั้นฉันจึงพยายามทำเช่นนี้: "~ / เนื้อหา / ไลบรารี / bootstrap / {version} /css/bootstrap.css" แต่เมื่อฉันรัน RegisterBundles ฉันได้รับ ArgumentException ที่ระบุว่า "ไม่มีไดเรกทอรี"
Michael Nelson

4
ลงทะเบียนเพื่อไม่ทำงานในไดเรกทอรี โซลูชันใดที่ทำให้มันทำงานในไดเรกทอรี
Zapnologica

3
แก้ไข: ไม่เป็นไรพวกเขาอธิบายได้อย่างชัดเจนที่นี่! asp.net/mvc/overview/performance/bundling-and-minification ขอขอบคุณ!
Jon Koeter

12

บันเดิลนี้สามารถรองรับหมายเลขเวอร์ชันในชื่อสคริปต์ ดังนั้นการอัปเดต jQuery เป็นเวอร์ชันใหม่ในแอปพลิเคชันของคุณ (ผ่าน NuGet หรือด้วยตนเอง) ไม่จำเป็นต้องมีการเปลี่ยนแปลงโค้ด / มาร์กอัปใด ๆ

ดูลิงค์ต่อไปนี้สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการรวมกลุ่ม: http://weblogs.asp.net/jgalloway/archive/2012/08/16/asp-net-4-5-asp-net-mvc-4-asp-net- หน้าเว็บ-2-และภาพสตูดิโอ 2012 เว็บนักพัฒนา features.aspx


3
ตราบใดที่คุณแน่ใจว่าเวอร์ชั่นเก่าจะถูกลบออกจริง
Triynko

เมื่อใช้ {version} ฉันได้รับ Jquery ไม่ได้ถูกกำหนดและเมื่อฉันแทนที่ด้วยรุ่นจริงในกรณีของฉัน 3.1.1 มันใช้งานได้ดี
Marc Roussel

0

~/Scripts/jquery-{version}.jsรวมอยู่ในนั้น ที่นี่ระบบบันเดิลฉลาดพอที่จะอ้างอิงไฟล์ jquery เวอร์ชันสูงสุดเมื่อเราระบุตัวเลือก {version} ในพา ธ นอกจากนี้ระบบบันเดิลนี้ยังฉลาดพอที่จะเลือกเวอร์ชันย่อของไฟล์หากมีอยู่ในพา ธ ที่กำหนด

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