我有以下问题:
我们有一个加载模块(附加组件)的应用程序。这些模块可能需要在app.config中输入(例如WCF配置)。因为模块是动态加载的,所以我不想在应用程序的app.config文件中包含这些条目。
我想做的是以下几点:
- 在内存中创建一个新的app.config,其中包含模块中的config部分
- 告诉我的应用程序使用该新的app.config
注意:我不想覆盖默认的app.config!
它应该透明地工作,以便例如ConfigurationManager.AppSettings
使用该新文件。
在评估此问题期间,我想到了与此处提供的解决方案相同的解决方案:使用nunit重新加载app.config。
不幸的是,它似乎没有任何作用,因为我仍然从正常的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之外的其他值。
Reload app.config with nunit
不确定,如果在加载任何配置之前在应用程序条目上使用了hack,则可以正常工作。
AppDomain
与相应的配置文件托管在一起吗?