web-dev-qa-db-ja.com

ほとんどのファイルを含まないASP.NetMVCスタイルバンドル

最近、私のローカルコピーのプロジェクトは、ほとんどのスタイルを完全に失いました。ほとんどのスタイリングは1つのファイルで行われ、残りはKendoやjQuery UIなどのマイナーなものであったため、理解するのに少し時間がかかりました。

他のマイナーなものはページに追加されていませんでした。スタイルは、UIではなく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")
17
vbullinger

デフォルトでは、名前が「。min.css」で終わるファイルは、releaseビルドにのみ含まれます。

推奨されるバンドル構成は、縮小されていない.cssファイルと.jsファイルのみを含めることです。そうすると、リリースビルドで.minバージョンが自動的に選択されます(存在する場合)。つまり、<compilation debug="false">in your 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);
    }
}

BundleTable.EnableOptimizations を設定して、最適化を明示的に有効/無効にすることもできます。

55
khellang