Asp.net

ASP.NET 捆綁和縮小 - 包括用於生產捆綁的已縮小文件和用於開發的未縮小文件

  • June 5, 2014

我想要一些關於 ASP.NET MVC 捆綁和縮小的專家建議。我的項目腳本文件中有未縮小的(.js)和縮小的版本(.min.js)。我已將它們包含在我的腳本包中,如下所示:

bundles.Add(new ScriptBundle("~/bundles/layout").Include(
                   "~/Scripts/jquery-{version}.js",
                   "~/Scripts/lib/errorhandling.js",
                   "~/Scripts/lib/errorhandling.min.js",
                   "~/Scripts/vendor/modernizr.custom.js",
                   "~/Scripts/vendor/modernizr.custom.min.js",
                   "~/Scripts/toastr.js",
                   "~/Scripts/toastr.min.js"));

似乎該包確實每個腳本文件只包含一次,而不是兩次。我已經在開發和生產中確認了這一點。(附帶說明,在開發中,即當 debug=true 時,不會渲染包,但文件會作為單獨的腳本標籤包含在內。這也是我想要的行為。)

我的問題是:

(1) 這是包含用於生產設置的已縮小文件和用於開發的未縮小文件的最佳和推薦方法嗎?

(2) ASP.NET 是否嘗試在生產中縮小整個捆綁包(即使它已經被縮小了)?如果是,防止 ASP.NET 嘗試縮小捆綁包的最佳方法是什麼?

提前致謝!

無需在腳本包中專門包含縮小版本。預設情況下,MVC 將搜尋與 .min.js 匹配的文件並包含該文件(不完全確定它是否會嘗試進一步縮小)。如果沒有,它會創建一個縮小版本。您可以通過將以下內容添加到 BundleConfig.cs 來測試它

using System.Web.Optimization;

然後在最後添加以下內容以debug=true在開發中覆蓋

BundleTable.EnableOptimizations = true;

來自MS 文件

捆綁框架遵循幾個常見的約定,例如:

  • 當“FileX.min.js”和“FileX.js”存在時選擇“.min”文件發布。
  • 選擇非“.min”版本進行調試。
  • 忽略僅由 IntelliSense 使用的“-vsdoc”文件(例如 jquery-1.7.1-vsdoc.js)。

引用自:https://stackoverflow.com/questions/24053519