यहां बताया गया है कि प्रति-बंडल आधार पर न्यूनतमकरण को कैसे निष्क्रिय किया जाए:
bundles.Add(new StyleBundleRaw("~/Content/foobarcss").Include("/some/path/foobar.css"));
bundles.Add(new ScriptBundleRaw("~/Bundles/foobarjs").Include("/some/path/foobar.js"));
सिडेनोट: आपके बंडलों के लिए उपयोग किए जाने वाले मार्ग आपके प्रकाशित बिल्ड में किसी भी वास्तविक पथ के साथ मेल नहीं खाते हैं अन्यथा कुछ भी काम नहीं करेगा। यह भी सुनिश्चित करें कि .js, .cs और / या 'का उपयोग करने से बचें।' और '_' बंडल के नाम पर कहीं भी। नाम को यथासंभव सरल और सीधा रखें, जैसे ऊपर दिए गए उदाहरण में।
सहायक वर्गों को नीचे दिखाया गया है। ध्यान दें कि इन कक्षाओं को भविष्य में प्रूफ बनाने के लिए हम .clear () के बजाय सर्जिकल रूप से js / css माइनिंग इंस्टेंसेस को हटाते हैं और हम एक माइम-टाइप-सेटर ट्रांसफॉर्मेशन भी डालते हैं जिसके बिना प्रोडक्शन बिल्ड विशेष रूप से परेशानी के समय चलने के लिए बाध्य होते हैं। यह ठीक से सीएसएस-बंडलों (फायरफॉक्स और क्रोम अस्वीकार सीएसएस बंडलों को माइम-टाइप "टेक्स्ट / एचटीएमएल" पर सेट करने के लिए आता है जो डिफ़ॉल्ट है):
internal sealed class StyleBundleRaw : StyleBundle
{
private static readonly BundleMimeType CssContentMimeType = new BundleMimeType("text/css");
public StyleBundleRaw(string virtualPath) : this(virtualPath, cdnPath: null)
{
}
public StyleBundleRaw(string virtualPath, string cdnPath) : base(virtualPath, cdnPath)
{
Transforms.Add(CssContentMimeType); //0 vital
Transforms.Remove(Transforms.FirstOrDefault(x => x is CssMinify)); //0
}
//0 the guys at redmond in their infinite wisdom plugged the mimetype "text/css" right into cssminify upon unwiring the minifier we
// need to somehow reenable the cssbundle to specify its mimetype otherwise it will advertise itself as html and wont load
}
internal sealed class ScriptBundleRaw : ScriptBundle
{
private static readonly BundleMimeType JsContentMimeType = new BundleMimeType("text/javascript");
public ScriptBundleRaw(string virtualPath) : this(virtualPath, cdnPath: null)
{
}
public ScriptBundleRaw(string virtualPath, string cdnPath) : base(virtualPath, cdnPath)
{
Transforms.Add(JsContentMimeType); //0 vital
Transforms.Remove(Transforms.FirstOrDefault(x => x is JsMinify)); //0
}
//0 the guys at redmond in their infinite wisdom plugged the mimetype "text/javascript" right into jsminify upon unwiring the minifier we need
// to somehow reenable the jsbundle to specify its mimetype otherwise it will advertise itself as html causing it to be become unloadable by the browsers in published production builds
}
internal sealed class BundleMimeType : IBundleTransform
{
private readonly string _mimeType;
public BundleMimeType(string mimeType) { _mimeType = mimeType; }
public void Process(BundleContext context, BundleResponse response)
{
if (context == null)
throw new ArgumentNullException(nameof(context));
if (response == null)
throw new ArgumentNullException(nameof(response));
response.ContentType = _mimeType;
}
}
इस पूरे काम को करने के लिए आपको स्थापित करने की आवश्यकता है (नगेट के माध्यम से):
WebGrease 1.6.0+ Microsoft.AspNet.Web.Optimization 1.1.3+
और आपके web.config को इस तरह समृद्ध किया जाना चाहिए:
<runtime>
[...]
<dependentAssembly>
<assemblyIdentity name="System.Web.Optimization" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-x.y.z.t" newVersion="x.y.z.t" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-x.y.z.t" newVersion="x.y.z.t" />
</dependentAssembly>
[...]
</runtime>
<!-- setting mimetypes like we do right below is absolutely vital for published builds because for some reason the -->
<!-- iis servers in production environments somehow dont know how to handle otf eot and other font related files -->
</system.webServer>
[...]
<staticContent>
<!-- in case iis already has these mime types -->
<remove fileExtension=".otf" />
<remove fileExtension=".eot" />
<remove fileExtension=".ttf" />
<remove fileExtension=".woff" />
<remove fileExtension=".woff2" />
<mimeMap fileExtension=".otf" mimeType="font/otf" />
<mimeMap fileExtension=".eot" mimeType="application/vnd.ms-fontobject" />
<mimeMap fileExtension=".ttf" mimeType="application/octet-stream" />
<mimeMap fileExtension=".woff" mimeType="application/font-woff" />
<mimeMap fileExtension=".woff2" mimeType="application/font-woff2" />
</staticContent>
<!-- also vital otherwise published builds wont work https://stackoverflow.com/a/13597128/863651 -->
<modules runAllManagedModulesForAllRequests="true">
<remove name="BundleModule" />
<add name="BundleModule" type="System.Web.Optimization.BundleModule" />
</modules>
[...]
</system.webServer>
ध्यान दें कि फोंट आदि के मामले में आपको अपने सीएसएस-बंडलों को काम करने के लिए अतिरिक्त कदम उठाने पड़ सकते हैं, लेकिन यह एक अलग कहानी है।