我如何在应用程序之后动态添加包

我有一个使用风格绑定主题的asp.net MVC4 web应用程序。 我有一个像这样的物理主题文件夹结构...

 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发生后动态添加bundle?


这不是我们明确想要支持的,期望的是所有捆绑包都在应用程序启动之前注册。 否则,这将导致webfarm场景中的问题,其中一些捆绑包不存在于所有服务器上,这会导致404s。

bundle缓存的依赖关系将处理从ASP.NET缓存中清除旧的响应,但它不会触发对RegisterBundles的另一个调用,该调用将从您的global.asax调用,并且只会在您提及的应用程序回收期间调用。

链接地址: http://www.djcxy.com/p/69901.html

上一篇: How can I dynamically add bundles after Application

下一篇: Adding a link in an array in PHP using href