我有以下问题:
我们有一个加载模块(插件)的应用程序。这些模块可能需要在 app.config 中有条目(例如 WCF 配置)。由于这些模块是动态加载的,我不想在我的应用程序的 app.config 文件中添加这些条目。
我想做的是:
- 在内存中创建一个新的 app.config,其中包括来自模块的配置部分
- 告诉我的应用程序使用该新的 app.config
注意:我不想覆盖默认的 app.config!
它应该透明地工作,例如 ConfigurationManager.AppSettings
使用那个新文件。
在解决这个问题时,我提出了与此处提供的解决方案相同的解决方案:Reload app.config with nunit.
不幸的是,它似乎没有任何作用,因为我仍然从正常的 app.config 获取数据。
我使用了以下代码进行测试:
Console.WriteLine(ConfigurationManager.AppSettings["SettingA"]);
Console.WriteLine(Settings.Default.Setting);
var combinedConfig = string.Format(CONFIG2, CONFIG);
var tempFileName = Path.GetTempFileName();
using (var writer = new StreamWriter(tempFileName))
{
writer.Write(combinedConfig);
}
using(AppConfig.Change(tempFileName))
{
Console.WriteLine(ConfigurationManager.AppSettings["SettingA"]);
Console.WriteLine(Settings.Default.Setting);
}
它会打印出相同的值两次,尽管combinedConfig
包含除了正常的app.config
之外的其他值。