我有以下问题:
我们有一个加载模块(附加组件)的应用程序。这些模块可能需要 app.config 中的条目(例如 WCF 配置)。因为模块是动态加载的,所以我不希望在应用程序的 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 以外的其他值。