ASP.Net MVC样式包不包括大多数文件

vbu*_*ger 17 asp.net-mvc bundling-and-minification

最近,我的一个项目的本地副本完全失去了它的大部分样式.我花了一些时间才弄明白,因为大多数样式都是在一个文件中完成的,其余的都是像Kendo和jQuery UI这样的小东西.

其他的小东西没有添加到页面中.我认为这些样式已经被其他开发人员修改过了(暂时还没有触及过这个项目),他们只测试了Web API的东西而不是UI,所以他可能会破坏它并且从来不知道,但我追查了这个问题:只有site.css文件被包含在包中而没有包含在其他文件中.我甚至尝试重新排列捆绑包中包含的CSS文件的顺序,它只包括site.css.

我重建了项目,清理了缓存等,所以肯定看到了变化.我记得最近更新了一些NuGet包或VS包或者其他东西 - 甚至可能是MVC包?

我的问题是:有什么改变导致这种情况发生吗?是什么导致了这个?

编辑:代码来自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"));
}
Run Code Online (Sandbox Code Playgroud)

代码来自_Layout.cshtml:

@Styles.Render("~/Content/themes/base/css", "~/Content/css")
Run Code Online (Sandbox Code Playgroud)

khe*_*ang 55

默认情况下,名称以" .min.css " 结尾的文件将仅包含在发布版本中.

建议的捆绑配置仅包括非缩小的.css和.js文件,然后将在发布版本中自动选择.min版本(如果存在),即<compilation debug="false">Web.config中.

您可以通过清除然后添加忽略规则来控制此行为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);
    }
}
Run Code Online (Sandbox Code Playgroud)

您还可以通过设置显式启用/禁用优化BundleTable.EnableOptimizations.