Подтвердить что ты не робот

Пакеты JS не отображаются без EnableOptimization, установленного в true

Я не знаю, что я делаю что-то неправильно, но это, вероятно, ошибка внутри MVC4. Интересно, как я могу это исправить?

Рабочий сценарий

public class BundleConfig
{
    public static void RegisterBundles(BundleCollection bundles)
    {
        ScriptBundle scriptBundle = new ScriptBundle("~/js");
        string[] scriptArray =
        {
            "~/content/plugins/jquery/jquery-1.8.2.min.js",
            "~/content/plugins/jquery/jquery-ui-1.9.0.min.js",
            "~/content/plugins/jquery/jquery.validate.min.js",
            "~/content/plugins/jquery/jquery.validate.unobtrusive.min.js",
            "~/content/plugins/bootstrap/js/bootstrap.min.js",
        };
        scriptBundle.Include(scriptArray);
        scriptBundle.IncludeDirectory("~/content/js", "*.js");
        bundles.Add(scriptBundle);

        BundleTable.EnableOptimizations = true;
    }
}

@Scripts.Render("~/js")

Преобразует (например, IT WORKS!)

<script src="/js?v=VeCPNK561DZp34yjmWbLrNM35Kf6gaNDl0xsMMC25BQ1"></script>

Не так много рабочего сценария

public class BundleConfig
{
    public static void RegisterBundles(BundleCollection bundles)
    {
        ScriptBundle scriptBundle = new ScriptBundle("~/js");
        string[] scriptArray =
        {
            "~/content/plugins/jquery/jquery-1.8.2.min.js",
            "~/content/plugins/jquery/jquery-ui-1.9.0.min.js",
            "~/content/plugins/jquery/jquery.validate.min.js",
            "~/content/plugins/jquery/jquery.validate.unobtrusive.min.js",
            "~/content/plugins/bootstrap/js/bootstrap.min.js",
        };
        scriptBundle.Include(scriptArray);
        scriptBundle.IncludeDirectory("~/content/js", "*.js");
        bundles.Add(scriptBundle);

        // BundleTable.EnableOptimizations = true; // I could set it to 'false' for same result, it false by default
    }
}

@Scripts.Render("~/js")

Преобразует (например, НЕ РАБОТАЕТ!)

(nothing, couple of empty break lines)

4b9b3361

Ответ 1

Если мое понимание верное, вы должны определить свои пакеты, используя "не-мин" файлы JavaScript. Когда вы включаете оптимизацию, он будет заменять не-мин файлы для файлов min для вас:

public class BundleConfig
{
    public static void RegisterBundles(BundleCollection bundles)
    {
        ScriptBundle scriptBundle = new ScriptBundle("~/js");
        string[] scriptArray =
        {
            "~/content/plugins/jquery/jquery-1.8.2.js",
            "~/content/plugins/jquery/jquery-ui-1.9.0.js",
            "~/content/plugins/jquery/jquery.validate.js",
            "~/content/plugins/jquery/jquery.validate.unobtrusive.js",
            "~/content/plugins/bootstrap/js/bootstrap.js",
        };
        scriptBundle.Include(scriptArray);
        scriptBundle.IncludeDirectory("~/content/js", "*.js");
        bundles.Add(scriptBundle);
    }
}

Оптимизации при отладке устанавливаются как ложные, но по умолчанию они действительны в режиме деблокирования.

Ответ 2

да, он не работает должным образом с такими файлами, как *.min.js.

", если вы добавите файл в свой пакет, у которого есть имя, которое заканчивается на .min.js(как и я), и активизация arent не активирована (например, отладка установлена ​​на true в web.config и BundleTable.EnableOptimizations не было set to true), этот файл будет проигнорирован (т.е. no script include будет сгенерированный для него в вашем html).

Здесь вы можете прочитать полный исходный ответ: http://blog.degree.no/2013/06/javascript-file-missing-resource-bundle-asp-net-web-optimization-framework/