调试设置为false后,MVC Script Bundles的顺序错误

时间:2017-03-31 19:10:44

标签: asp.net-mvc bundling-and-minification

更新:经过一段时间捆绑工作正常,不知道它是什么)

在我的BundleConfig.cs中,我定义了这些包

public static void RegisterBundles(BundleCollection bundles) 
{
    bundles.Add(new ScriptBundle("~/bundles/vendor").Include(
        "~/Scripts/jquery-{version}.js",
        "~/Scripts/bootstrap.js",
        "~/Scripts/bootstrap-datetimepicker.js",
        "~/Scripts/es6-shim.js",
        "~/Scripts/toastr.js",
        "~/Scripts/angular.js",
        "~/Scripts/angular-route.js",
        "~/Scripts/highcharts.src.js",
        "~/Scripts/highcharts-ng.js",
        "~/Scripts/angular-block-ui.js",
        "~/Scripts/angular-translate.js"));

    bundles.Add(new ScriptBundle("~/bundles/app").Include(
        "~/Scripts/app/app.js",
        "~/Scripts/app/directives.js",
        "~/Scripts/app/translation.js",
        "~/Scripts/app/data.service.js",
        "~/Scripts/app/main.controller.js",
        "~/Scripts/app/parameters.controller.js",
        "~/Scripts/app/schedules.controller.js",
        "~/Scripts/app/settings.controller.js",
        "~/Scripts/app/subscriptions.controller.js"));
}

在我的Index.cshtml文件中,我有这些添加这些包的序列

@Scripts.Render("~/bundles/vendor")
@Scripts.Render("~/bundles/app")

如果是在web.config

<compilation debug="true" targetFramework="4.5">

我有正确的捆绑序列

enter image description here

如果我将debug更改为false

<compilation debug="false" targetFramework="4.5">

序列被破坏,应用程序无效!

为什么会这样?如何解决?

enter image description here

1 个答案:

答案 0 :(得分:1)

在一个页面中使用多个Scripts.Render并不常见,您可以将脚本合并到一个包中。当您在我们使用RenderSection来满足我们目的的特定视图中处理部分/条件脚本时,可能需要这样做。

您的问题来自于现实,捆绑订单对于带有通配符的名称按字母顺序排列。在您的情况下,在 v endor之前调用 pp

我的第一个解决方案是,如果可能的话,使用一个Scripts.Render

第二个解决方案更改调用第二个Scripts.Render的位置,比如应用脚本,例如在页面底部使用它们或在它们之间使用meta标记(不要在供应商之后避免订购)。

如果您想确保脚本的顺序正确,请不要使用多个Scripts.Render。相反,Configure the ordering for single bundle