我一直在使用ASP.NET捆绑和缩小与mugget包Microsoft.AspNet.Web.Optimization。
昨天我注意到我的大多数捆绑文件不再具有v查询字符串参数,但其中一个除外:
/Sgc.Web/bundles/css/JQueryUI
/Sgc.Web/bundles/css/DefaultPage
/Sgc.Web/bundles/js/Menu
/Sgc.Web/bundles/js/DefaultPage
/Sgc.Web/bundles/js/ReportOutputs
/Sgc.Web/bundles/js/UnderscoreBackbone?v=4YsZ6DBVserabs64GE87Ua4d51aeg0D1wXHWNe3E6NU1
仍然具有查询字符串的JS包在我对其进行更改后始终会生成不同的v param值(如预期的那样)。但是当我对他们的css或js文件进行更改时,其余的包(css或js)会包含这些更改,但不再生成v param值。
执行捆绑的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);
}
}
从上面可以看出,我正在使用Bundle超类而不是StyleBundle或ScriptBundle子类构建bundle。但是我也尝试使用这两个子类进行捆绑,结果是相同的:除了UnderscoreBackbone捆绑包之外,所有捆绑包仍然没有v param。据我所知,UnderscoreBackbone捆绑包的制作方式和剩余的捆绑包没有区别。
我正在使用,
有没有人曾经遇到过这类问题,或者有任何暗示我在哪里寻找解决方案?
提前致谢,
MggLp
答案 0 :(得分:-1)
有时,在观看中,我们可能会做类似的事情 -
Scripts.Render("/bundles/js/DefaultPage")
但获取哈希的正确语法 -
Scripts.Render("~/bundles/js/DefaultPage").
这可能是绝对和相对路径的问题。
使用~
,我们可以获取捆绑文件的查询字符串。