Mam aplikację sieci web asp.net MVC4, która używa stylu powiązania dla motywów. Mam strukturę folderów tematycznych takich jak ...Jak mogę dynamicznie dodawać pakiety po wystąpieniu Application_Start?
Themes\
_Base\
Theme1\
Theme2\
...\
Każdy folder tematów zawiera dowolną liczbę plików LESS. W mojej metodzie BundleConfig.RegisterBundles
mam trochę logiki, która przechodzi przez każdy folder z motywami i tworzy pakiet dla każdego. Mechanizm sprzedaży pakietowej od System.Web.Optimization będzie śledzić zmiany w plikach i folderach, które są w pakietach i czyścić pamięć podręczną pakietów, co działa dobrze.
Co potrzebne jest jednak droga dla nowych folderach tematycznych (tj Theme3\
) mają być skopiowane do mojego folderu głównego Themes
, a aplikacja do rozpoznawania osób bez konieczności uprzedniego ponownego uruchomienia go. Próbowałem tworząc „atrapę” pakiet, który odwołuje wszystkie pliki w każdym folderze ...
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);
... ale to nie wydaje się, aby pomóc. Kiedy robię Theme3\
, nie wywołuje ono innego połączenia z BundleConfig.RegisterBundles
. Nadal muszę wykonać IISRESET, odtworzyć pulę aplikacji itp., Aby nowy motyw został rozpoznany.
Czy istnieje sposób dynamicznego dodawania pakietów po wystąpieniu Application_Start?
Dzięki Hao. Czy istnieje sposób, aby ręcznie przepłukać pamięć podręczną (być może podobne do http://stackoverflow.com/questions/12317391/how-to-force-bundlecollection-to-flush-cached-script-bundles-in-mvc4) i zmusić go do odbudowy pakietów podczas działania aplikacji? – racingcow
Cóż, możesz to zrobić, wykonując zestaw no-op na dowolnej z tych właściwości w Pakiecie, takich jak Zleceniodawca/Builder/EnableFileExtensionReplacements, po prostu po prostu wykonaj bundle.Orderer = bundle.Orderer i to spowoduje, że kolor będzie wyglądał tak. –
Może powinienem był powiedzieć "call RegisterBundles" zamiast "odbudować pakiety". Szukam dodać nowe zamiast po prostu odświeżyć pliki w istniejących pakietów. – racingcow