c# – ASP.NET MVC 4捆绑 – DEBUG模式下的单个文件URL
问题:
在ASP.NET MVC 4.5中完成的HTML5离线应用程序中,我们使用框架的built-in feature捆绑和缩小样式和脚本.一切都与页面本身配合良好,但是用于写入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") 这适用于页面,通过在debug为true时发出单个js文件,在debug为false时发出一个捆绑文件. debug = true中的输出 <script src="/Scripts/ScriptOne.js"></script> <script src="/Scripts/ScriptTwo.js"></script> <script src="/Scripts/ScriptThree.js"></script> debug = false中的输出 <script src="/bundles/Scripts?v=B0_RvAM_5ifnREcGnNQ3FO8qQp4vyLOdtCUJ-2mXSuA1"></script> 缓存清单 这就是我们将脚本包含在CacheManifest中的方法 @System.Web.Optimization.BundleTable.Bundles.ResolveBundleUrl("~/bundles/Scripts") debug = true和debug = 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 解决方法
The MSDN documentation讨论了某种Scripts.RenderFormat方法,它看起来像是做我们想要的事情的好人选.但intellisense抱怨这个RenderFormat方法在当前引用的System.Web.Optimization版本中不存在.
但是,再次感谢Google,this answer here on SO正在解释这个RenderFormat方法实际上已包含在下一版本的alpha版本中. comment on that answer链接到解释我们如何安装它的页面: PM> Install-Package Microsoft.AspNet.Web.Optimization -Pre 使用此版本,Cache-Manifest可以更改为: @System.Web.Optimization.Scripts.RenderFormat("{0}","~/bundles/Scripts") 我们现在让缓存清单在debug = true时发出单个文件. 显然,MSDN文档与当前的稳定版本不同步! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |