테마에 스타일 번들을 사용하는 asp.net MVC4 웹 응용 프로그램이 있습니다. 나는 같은 물리적 테마 폴더 구조를 가지고 있습니다 ...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