2013-02-19 68 views
17

最近,我的本地項目副本完全失去了大部分的樣式。花了我一段時間才弄明白,因爲大部分的樣式都是在一個文件中完成的,其餘的都是像Kendo和jQuery UI這樣的小事情。ASP.Net MVC風格包不包括大多數文件

另一個,小東西沒有被添加到頁面。我認爲這些樣式已經被另一個開發人員修改過(有一段時間沒有觸及這個項目),他只測試Web API的東西,而不是UI,所以他可能破壞了它並且從未知道,但我追蹤了這個問題:該軟件包中只包含site.css文件,而其他文件不包含該文件。我甚至嘗試重新安排捆綁包中包含的CSS文件的順序,它只包含site.css

我重建了項目,清除了緩存等,所以肯定會看到變化。我記得最近更新了一些NuGet軟件包或VS軟件包 - 甚至可能是MVC軟件包?

我的問題是:做了這件事情發生了什麼變化?這是什麼造成的?

編輯:代碼從BundleConfig.cs

public static void RegisterBundles(BundleCollection bundles) 
{ 
    bundles.Add(new StyleBundle("~/Content/css").Include(
      "~/Content/site.css", 
      "~/Content/themes/kendo/kendo.common.min.css", 
      "~/Content/themes/kendo/kendo.default.min.css", 
      "~/Content/themes/base/minified/jquery.ui.core.min.css", 
      "~/Content/themes/base/minified/jquery.ui.resizable.min.css", 
      "~/Content/themes/base/minified/jquery.ui.selectable.min.css", 
      "~/Content/themes/base/minified/jquery.ui.accordion.min.css", 
      "~/Content/themes/base/minified/jquery.ui.autocomplete.min.css", 
      "~/Content/themes/base/minified/jquery.ui.button.min.css", 
      "~/Content/themes/base/minified/jquery.ui.dialog.min.css", 
      "~/Content/themes/base/minified/jquery.ui.slider.min.css", 
      "~/Content/themes/base/minified/jquery.ui.tabs.min.css", 
      "~/Content/themes/base/minified/jquery.ui.datepicker.min.css", 
      "~/Content/themes/base/minified/jquery.ui.progressbar.min.css", 
      "~/Content/themes/base/minified/jquery.ui.theme.min.css")); 
} 

_Layout.cshtml代碼:

@Styles.Render("~/Content/themes/base/css", "~/Content/css") 
+0

請您發佈您的捆綁代碼。 – ngm 2013-02-19 20:32:12

+0

已更新,代碼爲@ngm。 – vbullinger 2013-02-19 21:23:56

+0

現在不是這個有趣的:超過1000個意見和零分的問題... – vbullinger 2013-06-12 22:17:38

回答

54

默認情況下,文件在 「.min.css」 將只包括結尾的名稱在版本 builds。

推薦的包構造是僅包括非精縮的CSS和在的Web.config在釋放.js文件,則.min版本將被自動選擇(如果它存在)構建,即<compilation debug="false">

您可以通過清除然後將忽略規則添加到BundleCollection.IgnoreList來控制此行爲。一個例子BundleConfig看起來是這樣的:

public static class BundleConfig 
{ 
    public static void RegisterBundles(BundleCollection bundles) 
    { 
     ConfigureIgnoreList(bundles.IgnoreList); 

     // Setup your bundles... 
    } 

    public static void ConfigureIgnoreList(IgnoreList ignoreList) 
    { 
     if (ignoreList == null) throw new ArgumentNullException("ignoreList"); 

     ignoreList.Clear(); // Clear the list, then add the new patterns. 

     ignoreList.Ignore("*.intellisense.js"); 
     ignoreList.Ignore("*-vsdoc.js"); 
     ignoreList.Ignore("*.debug.js", OptimizationMode.WhenEnabled); 
     // ignoreList.Ignore("*.min.js", OptimizationMode.WhenDisabled); 
     ignoreList.Ignore("*.min.css", OptimizationMode.WhenDisabled); 
    } 
} 

您也可以明確地啓用/通過設置BundleTable.EnableOptimizations禁用優化。

+4

聽起來不錯。我們在這裏完成。 – vbullinger 2013-02-19 21:51:15