ASP.Net MVC样式捆绑未包含大多数文件

17

最近,我的一个项目的本地拷贝完全失去了大部分样式。花了我一些时间才找到问题所在,因为大部分的样式都在一个文件中,其余的仅仅是一些像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"));
}

_Layout.cshtml中的代码:

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

请您能否发布您的打包代码。 - ngm
更新了代码,@ngm。 - vbullinger
这很有趣:问题已经有超过1,000次浏览,但分数却是零。 - vbullinger
1个回答

55

默认情况下,以.min.css结尾的文件只会包括在发布版本中。

推荐的捆绑配置是只包含非压缩的.css.js文件,在发布版本中将自动选择相应的.min版本(如果存在),即在Web.config中设置<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来明确启用/禁用优化。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接