我正在编写一个配置系统,其中app.config文件是从分布在多个位置的各种配置片段动态构建的.该系统目前的工作原理如下:
Bootstrapper构建配置文件.
Bootstrapper使用新的配置文件作为配置文件初始化新的AppDomain.
因此,新的AppDomain配置为使用新的配置文件,一切正常.
我们想摆脱这种多AppDomain方法; 它增加了一层复杂性,特别是涉及非托管库和其他遗留代码时.
在迁移到一个AppDomain时,工作流程将更改为:
Bootstrapper构建配置文件.
Bootstrapper将配置文件合并到自己的配置文件中.
Bootstrapper刷新其ConfigurationManager缓存.
Bootstrapper在同一个AppDomain中启动主应用程序.
似乎ConfigurationManager在内存中缓存部分.因此,例如,如果我在步骤#3之前阅读AppSettings,我必须调用:ConfigurationManager.RefreshSection("appSettings");
实际上,我必须确保刷新了引导程序使用的任何部分.
我能够迭代新配置文件中的所有配置部分并强制刷新它们,但是,这会强制配置管理器加载配置文件中引用的任何程序集.如果可能的话,我想推迟这个.如果有办法使ConfigurationManager当前在内存中的内容无效?