ASP.NET MVC 4捆绑 – DEBUG模式下的单个文件URL

问题:

在ASP.NET MVC 4.5中完成的HTML5离线应用程序中,我们使用框架的内置function捆绑和缩小样式和脚本。 一切都适用于页面本身,但是为了写入Cache Manifest,在那里(因为我们正在编写它),它总是只发出捆绑的URL。

因此,我们无法在脱机模式下调试JavaScript,因为各个调试js文件没有进入应用程序缓存。

码:

RegisterBundles

这就是我们的BundleConfig.RegisterBundles样子:

  // For more information on Bundling, visit http://go.microsoft.com/fwlink/?LinkId=254725 public static void RegisterBundles(BundleCollection bundles) { bundles.Add(new ScriptBundle("~/bundles/Scripts").Include( "~/Scripts/*.js" )); } 

HTML标记

我们将它包含在我们的_Layout.cshtml用于页面本身,如下所示:

 @System.Web.Optimization.Scripts.Render("~/bundles/Scripts") 

这适用于页面,通过在debugtrue时发出单个js文件,在debugtrue时发出一个捆绑文件。

debug=true输出

    

debug=false输出

  

缓存清单

这就是我们将脚本包含在CacheManifest

 @System.Web.Optimization.BundleTable.Bundles.ResolveBundleUrl("~/bundles/Scripts") 

debug=truedebug=false

 /bundles/Scripts?v=B0_RvAM_5ifnREcGnNQ3FO8qQp4vyLOdtCUJ-2mXSuA1 

我们想要什么?

我们想知道是否有一种方法可以像这样输出Cache-Manifest:

debug=true输出

 /Scripts/ScriptOne.js /Scripts/ScriptTwo.js /Scripts/ScriptThree.js 

debug=false输出

 /bundles/Scripts?v=B0_RvAM_5ifnREcGnNQ3FO8qQp4vyLOdtCUJ-2mXSuA1 

MSDN文档讨论了某种Scripts.RenderFormat方法,它看起来像是做我们想要的事情的好人选。 但intellisense抱怨这个RenderFormat方法不存在于当前引用的System.Web.Optimization版本中。

但是,再次感谢Google, 这里的答案就是解释说这个RenderFormat方法实际上包含在下一个版本的alpha版本中。 对该答案的评论与解释我们如何安装它的页面相关联:

 PM> Install-Package Microsoft.AspNet.Web.Optimization -Pre 

使用此版本, Cache-Manifest可以更改为:

 @System.Web.Optimization.Scripts.RenderFormat("{0}","~/bundles/Scripts") 

我们现在让缓存清单在debug=true时发出单个文件。

显然,MSDN文档与当前的稳定版本不同步!