我搜索了SO – 找到了许多相同的问题,但没有一个答案有帮助.
我已经构建了一堆网站,之前没有遇到过这个问题.
基本上,我的脚本包为我的javascript文件夹中的每个文件生成404.
我的结构(此刻,我已经改变了一堆!)看起来像这样:
我这样做,所以我可以保证ASP.Net不会改变顺序 – 我可以确保某些脚本领先于其他脚本.这就是我一直这样做的方式,通常效果很好.
我的捆绑脚本 – 目前 – 是:
public static void RegisterBundles(BundleCollection bundles) { bundles.FileSetOrderList.Clear(); // stlyes StyleBundle cssBundle = new StyleBundle("~/bundles/css"); cssBundle.IncludeDirectory("~/content/css","*.css",true); bundles.Add(cssBundle); //scripts ScriptBundle jsBundle = new ScriptBundle("~/bundles/jscript"); jsBundle.IncludeDirectory("~/content/javascript","*.js",true); bundles.Add(jsBundle); }
我尝试过一大堆虚拟路径.
我的CSS加载完美.我的Js – 我得到404的清单;每个* / js文件一个.
有任何想法吗?
我的控制台看起来像这样 – 这也向我展示了bundles.FileSetOrderList.Clear();实际上并没有清除它的列表,否则我会在角度之前得到jquery(这是我的意图)
UPDATE
如果我BundleTable.EnableOptimizations = true;在我的捆绑包中然后它全部捆绑,缩小和工作 – 虽然这很糟糕的开发调试 – 究竟是什么阻止它在调试模式下工作?!
解决方法
这篇文章似乎描述了同样的问题
ASP.Net MVC 5 sub-directory bundling issues,并且是Bundling框架1.1.1版的已知问题.
如果您不想降级或升级到这样的版本,您始终可以选择明确地将文件添加到您想要的包中.假设您将文件放在同一个文件夹中.
/javascript/lib/ascript.js /javascript/lib/ascript2.js /javascript/lib/jquery.js /javascript/lib/yscript.js
您可以通过Include()首先明确您想要的文件,然后通过IncludeDirectory()将其余文件整合在一起.
bundles.Add(new ScriptBundle("~/bundles/jscript").Include( "~/javascript/lib/jquery.js",.IncludeDirectory("~/javascript/lib","*.js")
捆绑是足够聪明的,如果首先明确添加了jQuery.js,它就不会加倍.同样,如果您仍希望将它们保留在子目录中,则可以在各个子目录上调用多个.IncludeDirectory.