我一直在使用ASP.NET捆绑和缩小与金块包Microsoft.AspNet.Web.Optimization。ASP.NET捆绑和缩小不产生查询字符串参数
昨天我注意到,我的大部分包文件再也不用在V查询字符串参数其中之一的除外:
/Sgc.Web/bundles/css/JQueryUI
/SGC名.web /捆绑/ CSS/DefaultPage
/Sgc.Web/bundles/js/Menu
/Sgc.Web/bundles/js/DefaultPage
/Sgc.Web/bundl ES/JS/ReportOutputs
/Sgc.Web/bundles/js/UnderscoreBackbone?v=4YsZ6DBVserabs64GE87Ua4d51aeg0D1wXHWNe3E6NU1
仍然有查询字符串总是不断产生不同的V PARAM值后,我做就可以改变JS包(如预期)。然而,当我对其css或js文件进行更改时,剩余的包(css或js)会将这些更改合并到一起,但不会再生成v参数值。
C#代码来执行捆绑:
// -- create and add CSS bundles without minification
BundleTable.EnableOptimizations = true;
bundles.Add(new Bundle("~/bundles/css/JQueryUI").Include(
"~/Styles/Gui/jquery-ui-1.10.4-custom.css",
"~/Styles/Gui/jquery-ui-custom.css",
"~/Styles/Gui/jquery.ui.combogrid.css"));
bundles.Add(new Bundle("~/bundles/css/DefaultPage").Include(
"~/Styles/Default.css",
"~/Content/toastr.min.css"));
// -- create and add JS bundles without minification
bundles.Add(new Bundle("~/bundles/js/DefaultPage").Include(
"~/Scripts/Defaults.js",
"~/Scripts/toastr.min.js"));
bundles.Add(new Bundle("~/bundles/js/Menu").Include(
"~/Scripts/Gui/Menus/SuperFish/jquery.hoverIntent.r7.min.js",
"~/Scripts/Gui/Menus/SuperFish/superfish1_7_4.min.js",
"~/Scripts/Gui/Menus/SuperFish/factory.js"));
bundles.Add(new Bundle("~/bundles/js/UnderscoreBackbone").Include(
"~/Scripts/underscore.min.js",
"~/Scripts/backbone.min.js"));
bundles.Add(new Bundle("~/bundles/js/ReportOutputs").Include(
"~/Scripts/Gui/jquery-visibility.js",
"~/Scripts/UserControls/ReportOutputs.js"));
//-- if in Release mode, then minify all the bundles
if (!System.Web.HttpContext.Current.IsDebuggingEnabled)
{
CssMinify cssMinify = new CssMinify();
JsMinify jsMinify = new JsMinify();
foreach (Bundle bundle in bundles)
{
if (bundle.Path.Contains("/js"))
{
bundle.Transforms.Add(jsMinify);
}
else
{
bundle.Transforms.Add(cssMinify);
}
}
如可以从上面的我建立与包超级类而不是StyleBundle或ScriptBundle子类捆中看到。然而,我也尝试使用这两个子类进行捆绑,结果是一样的:所有捆绑包仍然没有v参数,但UnderscoreBackbone捆绑包没有。据我所知,UnderscoreBackbone软件包和剩下的软件包没有什么区别。
我使用,
- 的Windows 8.1
- VS保费2013年更新1
- Microsoft.AspNet.Web.Optimization 1.1.3
- WebGrease 1.6.0
- 微软.Web.Infrastructure 1.0.0.0
- Json.NET(Newtonsoft.Json)6.0.1
- ANTLRv3 3.5.0.2
有没有人曾经遇到过这样的问题,或有任何提示,我可以在哪里寻找解决方案?
由于提前,
MggLp
尝试摆脱'if(!System.Web.HttpContext.Current.IsDebuggingEnabled)...'并替换为'bundles.Add(新的ScriptBundle'和'bundles.Add(新的StyleBundle'),并且确保任何bundle名称与目录名称不同,使用'〜/ bundles/bundleName'确保没有冲突更安全,并且您的src名称似乎与您的包名称不匹配。 – MikeSmithDev
我用IsDebuggingEnabled做了一些测试,如果注释了+使用StyleBundle和ScriptBundle,但是与上面描述相关的内容没有改变,我还重新安装了新版本的金块包Microsoft.AspNet.Web.Optimization,WebGrease,Json NET和ANTLRv3,但没有运气 –
你怎么做呈现你的包?对于ScriptBundle System.Web.Optimization.Scripts.Render(“〜/ bundles/js/DefaultPage”),对于St yleBundle System.Web.Optimization.Styles.Render(“〜/ bundles/css/JQueryUI”)。渲染方法将生成正确的html标签并包含v。但是,Bundle没有Render,所以我想你使用“Path”来获取URI? –