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

ASP.NET MVC Style Bundle, не включающий большинство файлов

Недавно моя локальная копия проекта полностью потеряла большую часть своего стиля. Потратил меня на то, чтобы понять это, так как большинство стилей было сделано в одном файле, а остальные были второстепенными вещами, такими как Kendo и пользовательский интерфейс jQuery.

Другой, незначительный материал не добавлялся на страницу. Я думал, что стили были изменены другим разработчиком (не затрагивали этот проект в то время), который тестировал только материал Web API, а не пользовательский интерфейс, чтобы он мог его разрушить и никогда не знал, но я обнаружил проблему: только файл site.css включался в комплект и ни один из других. Я даже попытался переупорядочить порядок файлов CSS, включенных в комплект, и ТОЛЬКО включать site.css.

Я перестроил проект, очистил кеш и т.д., поэтому он определенно видел изменения. Я помню, как обновлял некоторые пакеты NuGet или пакеты VS или что-то в последнее время - возможно, даже пакет MVC?

Мой вопрос: изменилось ли что-то, что заставило это произойти? Что вызывает это?

EDIT: код из BundleConfig.cs:

public static void RegisterBundles(BundleCollection bundles)
{
    bundles.Add(new StyleBundle("~/Content/css").Include(
            "~/Content/site.css",
            "~/Content/themes/kendo/kendo.common.min.css",
            "~/Content/themes/kendo/kendo.default.min.css",
            "~/Content/themes/base/minified/jquery.ui.core.min.css",
            "~/Content/themes/base/minified/jquery.ui.resizable.min.css",
            "~/Content/themes/base/minified/jquery.ui.selectable.min.css",
            "~/Content/themes/base/minified/jquery.ui.accordion.min.css",
            "~/Content/themes/base/minified/jquery.ui.autocomplete.min.css",
            "~/Content/themes/base/minified/jquery.ui.button.min.css",
            "~/Content/themes/base/minified/jquery.ui.dialog.min.css",
            "~/Content/themes/base/minified/jquery.ui.slider.min.css",
            "~/Content/themes/base/minified/jquery.ui.tabs.min.css",
            "~/Content/themes/base/minified/jquery.ui.datepicker.min.css",
            "~/Content/themes/base/minified/jquery.ui.progressbar.min.css",
            "~/Content/themes/base/minified/jquery.ui.theme.min.css"));
}

Код из _Layout.cshtml:

@Styles.Render("~/Content/themes/base/css", "~/Content/css")
4b9b3361

Ответ 1

По умолчанию файлы с именами, заканчивающимися на ".min.css", будут включены только в сборки release.

Рекомендуемая конфигурация пакета должна включать только неминифицированные .css и .js файлы, тогда версия .min будет автоматически выбрана (если она существует) в версиях сборки, т.е. <compilation debug="false"> в вашей сети. конфигурации.

Вы можете контролировать это поведение, очистив, а затем добавив правила игнорирования в BundleCollection.IgnoreList. Пример BundleConfig может выглядеть так:

public static class BundleConfig
{
    public static void RegisterBundles(BundleCollection bundles)
    {
        ConfigureIgnoreList(bundles.IgnoreList);

        // Setup your bundles...
    }

    public static void ConfigureIgnoreList(IgnoreList ignoreList)
    {
        if (ignoreList == null) throw new ArgumentNullException("ignoreList");

        ignoreList.Clear(); // Clear the list, then add the new patterns.

        ignoreList.Ignore("*.intellisense.js");
        ignoreList.Ignore("*-vsdoc.js");
        ignoreList.Ignore("*.debug.js", OptimizationMode.WhenEnabled);
        // ignoreList.Ignore("*.min.js", OptimizationMode.WhenDisabled);
        ignoreList.Ignore("*.min.css", OptimizationMode.WhenDisabled);
    }
}

Вы также можете включить/отключить оптимизацию, установив BundleTable.EnableOptimizations.