2013-02-19 16 views
17

हाल ही में, एक परियोजना की मेरी स्थानीय प्रति पूरी तरह से अपनी स्टाइल खो गई। मुझे इसे समझने में थोड़ी देर लग गई, क्योंकि अधिकांश स्टाइल एक फाइल में किया गया था और शेष केंडो और jQuery यूआई जैसी मामूली चीजें थीं।एएसपी.नेट एमवीसी स्टाइल बंडल अधिकांश फाइलों सहित नहीं

दूसरा, मामूली सामान पृष्ठ में नहीं जोड़ा जा रहा था। मैंने सोचा था कि शैली को किसी अन्य डेवलपर द्वारा संशोधित किया गया है (इस परियोजना को थोड़ी देर में छुआ नहीं है) जो केवल वेब एपीआई सामान का परीक्षण कर रहा था, यूआई नहीं, इसलिए वह इसे तोड़ सकता था और कभी नहीं जानता था, लेकिन मैंने समस्या को ट्रैक किया: केवल site.css फ़ाइल को बंडल में शामिल किया जा रहा था और अन्य कोई भी नहीं। मैंने बंडल में शामिल सीएसएस फ़ाइलों के क्रम को पुन: व्यवस्थित करने का भी प्रयास किया और इसमें केवल site.css शामिल होगा।

मैंने प्रोजेक्ट का पुनर्निर्माण किया, कैश साफ़ किया, आदि, इसलिए यह निश्चित रूप से परिवर्तन देख रहा था। मुझे कुछ NuGet संकुल या वीएस पैकेज या हाल ही में कुछ अद्यतन करना याद है - संभवतः यहां तक ​​कि एमवीसी पैकेज भी?

मेरा सवाल है: क्या कुछ ऐसा हुआ जिससे ऐसा हुआ? इसका क्या कारण है?

संपादित: कोड 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

+0

कोड के साथ अपडेट किया गया, @ngm। – vbullinger

+0

अब यह दिलचस्प नहीं है: प्रश्न के लिए 1,000 से अधिक विचार और शून्य का स्कोर ... – vbullinger

उत्तर

54

डिफ़ॉल्ट रूप से, में ".min.css" केवल शामिल किया जाएगा समाप्त होने के नाम के साथ फ़ाइलों रिलीज बनाता है।

सिफारिश बंडल विन्यास के लिए केवल गैर न्यूनतम किया गया .css शामिल हैं और फ़ाइलों, तो .min संस्करण स्वचालित रूप से चयन किया जाएगा अपने Web.config में बनाता रिलीज में (यदि वह मौजूद) .js, अर्थात <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