在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文档与当前的稳定版本不同步!
总结以上是内存溢出为你收集整理的c# – ASP.NET MVC 4捆绑 – DEBUG模式下的单个文件URL全部内容,希望文章能够帮你解决c# – ASP.NET MVC 4捆绑 – DEBUG模式下的单个文件URL所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)