我有一個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 2013-03-11 14:13:40
那麼你可以通過對Bundle上的任何屬性執行no-op操作來完成此操作,比如Orderer/Builder/EnableFileExtensionReplacements,基本上只需要bundle.Orderer = bundle.Orderer,這會導致我想到的衝突。 – 2013-03-11 20:31:34
也許我應該說「調用RegisterBundles」而不是「重建捆綁」。我正在尋找添加新的,而不是隻刷新現有的捆綁包中的文件。 – racingcow 2013-03-11 22:03:15