以错误的顺序捆绑加载脚本

Bundle Loading Scripts in wrong order

我从 jQuery 得到一个 jQuery is not defined error 验证在 jquery 之前加载。

我不确定这是否与使用 ASP.net 样板有关,尽管在捆绑配置中我有以下内容:

 bundles.Add(
            new ScriptBundle("~/Bundles/vendor/js/bottom")
                .Include(
                    "~/lib/json2/json2.js",
                    "~/lib/jquery/dist/jquery.min.js",
                    "~/lib/bootstrap/dist/js/bootstrap.min.js",
                    "~/lib/moment/min/moment-with-locales.min.js",
                    "~/lib/jquery-validation/dist/jquery.validate.min.js",
                    "~/lib/blockUI/jquery.blockUI.js",
                    "~/lib/toastr/toastr.min.js",
                    "~/lib/sweetalert/dist/sweetalert.min.js",
                    "~/lib/spin.js/spin.min.js",
                    "~/lib/spin.js/jquery.spin.js",
                    "~/lib/bootstrap-select/dist/js/bootstrap-select.min.js",
                    "~/lib/jquery-slimscroll/jquery.slimscroll.min.js",
                    "~/lib/Waves/dist/waves.min.js",
                    "~/lib/push.js/push.min.js",
                    "~/Abp/Framework/scripts/abp.js",
                    "~/Abp/Framework/scripts/libs/abp.jquery.js",
                    "~/Abp/Framework/scripts/libs/abp.toastr.js",
                    "~/Abp/Framework/scripts/libs/abp.blockUI.js",
                    "~/Abp/Framework/scripts/libs/abp.spin.js",
                    "~/Abp/Framework/scripts/libs/abp.sweet-alert.js",
                    "~/lib/flatpickr/dist/flatpickr.min.js",
                    "~/js/admin.js",
                    "~/js/main.js",
                    "~/Scripts/jquery.signalR-2.2.3.js",
                    "~/Views/Shared/_Layout.js"
                )
            );

所以我使用的是 jQuery 的缩小版和 jQuery.Validate 的缩小版。一旦我使用 jQuery 的缩小版本并加载页面,jquery.validate.min.js 是第一个加载的脚本,并且如预期的那样抛出 jQuery is not defined. error. 虽然只要我不使用 jQuery (jquery.js) 的缩小版本,脚本就会以正确的顺序加载。

ASP.NET 样板文件是否在我不知道的捆绑包中使用任何自定义文件排序?我确实相信 MVC,但可能是错误的,它会首先在包中处理显式命名的脚本,然后是符号命名的脚本。尽管这些都是明确命名的脚本。

有没有我遗漏的东西或关于如何解决这个问题的解决方案?

我最终使用了这里的答案:

几乎我定义了我自己的 BundleOrderer,称为 AsIsBundleOrder,它实现了 IBundleOrderer,它按原样返回文件,并将其设置为要在 BundleConfig 中使用的排序器。

这行得通,但仍然没有给我一个完整的答案,为什么(我认为的重要原因)默认订购者只促进 jQuery 验证在 jQuery 之前当我使用 jQuery.

的缩小版本时