我搜索了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(这是我的意图)
更新
如果我的捆绑包中有BundleTable.EnableOptimizations = true;
,那么它们全部捆绑,缩小并且可以工作 - 虽然这很难用于开发调试 - 究竟是什么阻止它在调试模式下工作?!
答案 0 :(得分:4)
这篇文章似乎描述了同样的问题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调用。
答案 1 :(得分:2)
如果将enable optimization标志设置为true,它将覆盖debug = false并将其捆绑。只需使用bundle.config文件中的以下代码片段即可在调试模式下删除捆绑。
#if !DEBUG
BundleTable.EnableOptimizations = true;
#endif
答案 2 :(得分:0)
我认为它是嵌套文件夹。我非常确定捆绑包只能查看该直接文件夹。您之前是否使用过捆绑的文件夹结构并且它成功运行了吗?
答案 3 :(得分:0)
如上所述,我一直没有找到jquery 404。
这不是一个很好的答案,但这是我解决的问题,直到找到更好的答案。
我的问题是以下情况,这在本地开发中非常愉快。
bundles.Add(new ScriptBundle("~/jquery").Include(new[]
{
"~/scripts/jquery-1.12.0.min.js",
}));
我尝试了变体并查看了其他选项,最后我将其更改为以下内容进行制作。 Googles CDN一直很可靠,如果你谷歌可以使用其他CDN选项。
bundles.Add(new ScriptBundle("~/jquery", "https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"));