テーマにスタイルバンドルを使用するasp.net MVC4 Webアプリケーションがあります。私は物理的なテーマのフォルダ構造を持っています。Application_Startが発生した後、バンドルを動的に追加するにはどうすればよいですか?
Themes\
_Base\
Theme1\
Theme2\
...\
各テーマフォルダには任意の数のLESSファイルがあります。私のBundleConfig.RegisterBundles
メソッドでは、各テーマフォルダをループし、それぞれのバンドルを作成するロジックがあります。 System.Web.Optimizationのバンドルメカニズムは、の既存のファイルとフォルダ内の変更を監視し、うまく動作するバンドルキャッシュをフラッシュします()。
しかし、私が必要とするのは、新しいテーマフォルダ(Theme3\
)を私のThemes
ルートフォルダにコピーして、アプリケーションが最初にそれを再起動することなくそれらを認識できる方法です。私は、すべてのフォルダ内のすべてのファイルを参照する「ダミー」バンドル...
var changeTracking = new StyleBundle(BUNDLE_ROOT);
changeTracking.Transforms.Clear();
changeTracking.IncludeDirectory(THEME_ROOT, "*.less", true);
changeTracking.Transforms.Add(new LessTransform());
changeTracking.Transforms.Add(new CssMinify());
bundles.Add(changeTracking);
を作成しようとした...それは助けていないようです。 Theme3\
を作成すると、BundleConfig.RegisterBundles
への別の呼び出しは発生しません。新しいテーマが認識されるようにするには、IISRESETを実行し、アプリケーションプールをリサイクルする必要があります。
Application_Startが発生した後にバンドルを動的に追加する方法はありますか?
ありがとうございます。キャッシュを手動でフラッシュする方法はありますか(おそらくhttp://stackoverflow.com/questions/12317391/how-to-force-bundlecollection-to-flush-cached-script-bundles-in-mvc4に似ています)。アプリケーションの実行中にバンドルを再構築するよう強制しますか? – racingcow
これは、Orderer/Builder/EnableFileExtensionReplacementsのように、バンドル上のこれらのプロパティのいずれかでno-opを設定することで可能です。基本的にはbundle.Orderer = bundle.Ordererを実行してください。 –
"バンドルを再構築する"の代わりに "Register RegisterBundles"と言うべきでしょうか?私は既存のバンドルのファイルをリフレッシュするのではなく、新しいものを追加しようとしています。 – racingcow