जहां तक मैं कह सकता हूं (क्योंकि System.Web.Optimization
पर स्पष्ट रूप से प्रलेखन बहुत स्पैस है), एएसपी.नेट में काम करने का तरीका यह है कि आप फाइलों का एक सेट पंजीकृत करते हैं (जावास्क्रिप्ट या सीएसएस, ScriptBundle
और StyleBundle
के साथ), और उन्हें संबद्ध करें एक आभासी पथ के साथ; उदाहरण के लिए, सभी jQuery UI स्क्रिप्ट के लिए ~/bundles/jqueryui
। बाद में, जब आप गैर-डीबग मोड में चल रहे हों तो ASP.NET इन फ़ाइलों को छोटा कर सकता है, और minified संस्करण को बंडल के लिए निर्दिष्ट वर्चुअल पथ पर उपलब्ध कराया जाएगा।एएसपी.नेट बंडलिंग - डिफ़ॉल्ट वर्चुअल पथ?
डिफ़ॉल्ट बंडल सेटअप वर्चुअल पथ के रूप में ~/bundles/...
के साथ कुछ स्क्रिप्ट बंडल पंजीकृत करता है, और कुछ सीएसएस वर्चुअल पथ के रूप में ~/Content/css
के साथ पंजीकृत करता है। मेरा सवाल है, यह असंगत नहीं है? ~/bundles/js/...
और ~/bundles/css/...
जैसे कुछ ऐसा करने के लिए और अधिक समझदारी नहीं होगी? वास्तव में, ~/Content
निर्देशिका वास्तव में एक वास्तविक निर्देशिका के रूप में मौजूद है, इसलिए नाम टक्कर का भी मौका है। मैंने सोचा होगा कि आप अपने आभासी बंडल पथ निर्देशिकाओं के लिए चाहते हैं कि डिफ़ॉल्ट रूप से मौजूद नहीं है, और वास्तविक फाइल सिस्टम पर बनाए जाने के लिए नहीं हैं। क्या कोई कारण है कि ~/Content/css
का उपयोग सीएसएस बंडल वर्चुअल पथ के लिए किया जाता है जिसे मैं समझ नहीं पा रहा हूं?
धन्यवाद, यह उत्तर माइक्रोसॉफ्ट ने ऐसा करने की वजह से देखा है और मैंने इसके बारे में सोचा नहीं था। मुझे लगता है कि अगर यह '~/Content/cssBundles' और' ~/content/jsBundles' जैसी किसी चीज़ के डिफ़ॉल्ट पथ का उपयोग करता है तो यह अधिक संगत होगा। – Jez
@jez मैं माइक्रोसॉफ्ट में एमवीसी टीम पर काम करता हूं इसलिए मुझे यह सुनिश्चित करने के लिए पता है :) – Eilon
इस समस्या को हल करने के लिए अब एक CssUrlRewriteTransform है। यह आपकी सीएसएस फ़ाइलों में यूआरएल को फिर से लिख देगा, इसलिए वे मूल निर्देशिका की बजाय आभासी निर्देशिका के सापेक्ष हैं; इस तरह, यह सीएसएस फ़ाइल के नए स्थान के बावजूद मूल निर्देशिका में फ़ाइलों को पा सकता है। – Triynko