最近、私のローカルコピーのプロジェクトは、ほとんどのスタイルを完全に失いました。ほとんどのスタイリングは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")
デフォルトでは、名前が「。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
を設定して、最適化を明示的に有効/無効にすることもできます。