ฉันพยายามออกคุณลักษณะ ScriptBundle MVC4 System.Web.Optimization 1.0
ฉันมีการกำหนดค่าต่อไปนี้:
public class BundleConfig
{
    public static void RegisterBundles(BundleCollection bundles)
    {
        // shared scripts
        Bundle canvasScripts =
            new ScriptBundle(BundlePaths.CanvasScripts)
                .Include("~/Scripts/modernizr-*")
                .Include("~/Scripts/json2.js")
                .Include("~/Scripts/columnizer.js")
                .Include("~/Scripts/jquery.ui.message.min.js")
                .Include("~/Scripts/Shared/achievements.js")
                .Include("~/Scripts/Shared/canvas.js");
        bundles.Add(canvasScripts);
    }
}
และมุมมองต่อไปนี้:
<script type="text/javascript" src="@Scripts.Url(BundlePaths.CanvasScripts)"></script>
ที่เป็นBundlePaths.CanvasScripts "~/bundles/scripts/canvas"มันทำให้สิ่งนี้:
<script type="text/javascript" src="/bundles/scripts/canvas?v=UTH3XqH0UXWjJzi-gtX03eU183BJNpFNg8anioG14_41"></script>
จนถึงตอนนี้ดีมากยกเว้น~/Scripts/Shared/achievements.jsเป็นสคริปต์แรกในซอร์สที่รวม ขึ้นอยู่กับทุกสคริปต์ที่รวมอยู่ก่อนหน้านั้นในไฟล์ScriptBundle. ฉันจะมั่นใจได้อย่างไรว่าจะเป็นไปตามลำดับที่ฉันเพิ่มคำสั่งรวมลงในชุด
อัปเดต
นี่เป็นแอปพลิเคชัน ASP.NET MVC 4 ที่ค่อนข้างใหม่ แต่กำลังอ้างอิงถึงแพ็คเกจก่อนวางจำหน่ายของเฟรมเวิร์กการเพิ่มประสิทธิภาพ ฉันลบมันและเพิ่มแพคเกจ RTM จากhttp://nuget.org/packages/Microsoft.AspNet.Web.Optimization ด้วยเวอร์ชัน RTM ที่มี debug = true ใน web.config@Scripts.Render("~/bundles/scripts/canvas")แสดงแท็กสคริปต์แต่ละแท็กตามลำดับที่ถูกต้อง
ด้วย debug = false ใน web.config สคริปต์ที่รวมจะมีสคริปต์ successments.js ก่อน แต่เนื่องจากเป็นนิยามฟังก์ชัน (ตัวสร้างวัตถุ) ที่เรียกในภายหลังจึงทำงานโดยไม่มีข้อผิดพลาด บางที minifier อาจฉลาดพอที่จะคิดหาการอ้างอิง?
ฉันยังลอง IBundleOrdererใช้งานที่ Darin Dimitrov แนะนำกับ RTM ด้วยตัวเลือกการดีบักทั้งสองตัวและมันก็ทำงานเหมือนกัน
ดังนั้นเวอร์ชันที่ลดขนาดจึงไม่อยู่ในลำดับที่ฉันคาดหวัง แต่ใช้งานได้