Как я могу указать явный порядок включения ScriptBundle?

Я пробую функцию MVC4 System.Web.Optimization 1.0 ScriptBundle .

У меня следующая конфигурация:

public class BundleConfig
{
    public static void RegisterBundles(BundleCollection bundles)
    {
        // shared scripts
        Bundle canvasScripts =
            new ScriptBundle(BundlePaths.CanvasScripts)
               .Include("~/Scripts/modernizr-*")
               .Include("~/Scripts/json2.js")
               .Include("~/Scripts/columnizer.js")
               .Include("~/Scripts/jquery.ui.message.min.js")
               .Include("~/Scripts/Shared/achievements.js")
               .Include("~/Scripts/Shared/canvas.js");
        bundles.Add(canvasScripts);
    }
}

и следующий вид:


где BundlePaths.CanvasScriptsесть "~/bundles/scripts/canvas". Это делает это:


Пока все хорошо, за исключением того, что ~/Scripts/Shared/achievements.js— это первый скрипт в исходном коде. Это зависит от каждого скрипта, включенного перед ним в ScriptBundle. Как я могу убедиться, что он соблюдает порядок, в котором я добавляю операторы включения в пакет?

Обновление

Это было относительно новое приложение ASP.NET MVC 4, но оно ссылалось на предварительный пакет платформы оптимизации. Я удалил его и добавил пакет RTM изhttp://nuget.org/packages/Microsoft.AspNet.Web.Optimization. В версии RTM с параметром debug=true в файле web.config @Scripts.Render("~/bundles/scripts/canvas")отображает отдельные теги сценария в правильном порядке.

С debug=false в web.config комбинированный скрипт сначала имеет скрипт achievement.js, но поскольку это конструктор объекта определения функции (), который вызывается позже, он выполняется без ошибок.Возможно, минификатор достаточно умен, чтобы разобраться в зависимостях?

Я также попробовал реализацию IBundleOrderer, предложенную Дарином Димитровым с RTM, с обеими опциями отладки, и она вела себя одинаково.

Так что уменьшенная версия не в том порядке, в котором я ожидаю, но она работает.

91
задан coumarc9 23 August 2016 в 20:58
поделиться