У меня следующая проблема: у
нас есть приложение, которое загружает модули (надстройки). Этим модулям могут потребоваться записи в app.config (например, конфигурация WCF). Поскольку модули загружаются динамически, я не хочу, чтобы эти записи были в файле app.config моего приложения.
Я бы хотел сделать следующее:
- Создайте новый app.config в памяти, который включает разделы конфигурации из модулей
- Скажите моему приложению использовать этот новый app.config
Примечание: я не хочу перезаписывать app.config по умолчанию!
Он должен работать прозрачно, чтобы, например, ConfigurationManager.AppSettingsиспользовать этот новый файл.
Во время оценки этой проблемы я пришел к тому же решению, что и здесь: перезагрузите app.config с помощью 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.
Reload app.config with nunitмог бы сработать, не уверен, если использовать его при входе в приложение до загрузки какой-либо конфигурации.
AppDomainс соответствующим файлом конфигурации не вариант?