ต่อไปนี้เป็นวิธีปิดใช้งานการลดขนาดเป็นกลุ่มต่อชุด:
bundles.Add(new StyleBundleRaw("~/Content/foobarcss").Include("/some/path/foobar.css"));
bundles.Add(new ScriptBundleRaw("~/Bundles/foobarjs").Include("/some/path/foobar.js"));
Sidenote: เส้นทางที่ใช้สำหรับบันเดิลของคุณจะต้องไม่ตรงกับเส้นทางที่เกิดขึ้นจริงในบิลด์ที่เผยแพร่ของคุณมิฉะนั้นจะไม่สามารถใช้งานได้ และอย่าลืมใช้. js, .css และ / หรือ '.' และ '_' ที่ใดก็ได้ในชื่อของบันเดิล ใช้ชื่อที่เรียบง่ายและตรงไปตรงมาที่สุดเท่าที่จะทำได้เช่นในตัวอย่างด้านบน
คลาสตัวช่วยแสดงอยู่ด้านล่าง โปรดสังเกตว่าเพื่อให้คลาสเหล่านี้เป็นหลักฐานในอนาคตเราจึงทำการลบอินสแตนซ์ js / css ที่มีขนาดเล็กแทนการใช้. clear () และเรายังแทรกการแปลง mime-type-setter โดยที่การสร้างจะถูกสร้างขึ้นโดยเฉพาะเมื่อ มันมาถึงการส่ง css-bundles อย่างเหมาะสม (firefox และ chrome ปฏิเสธ css bundles ด้วย mime-type set เป็น "text / html" ซึ่งเป็นค่าเริ่มต้น):
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;
}
}
ในการทำให้สิ่งทั้งหมดนี้ทำงานคุณต้องติดตั้ง (ผ่านทาง nuget):
WebGrease 1.6.0+ Microsoft.AspNet.Web.Optimization 1.1.3+
และเว็บของคุณควรได้รับการเสริมคุณค่าเช่น:
<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>
โปรดทราบว่าคุณอาจต้องทำตามขั้นตอนพิเศษเพื่อให้ css-bundles ของคุณทำงานในรูปแบบของตัวอักษรเป็นต้น แต่นั่นเป็นเรื่องที่แตกต่าง