Eu tenho o seguinte problema:
Temos um aplicativo que carrega módulos (complementos). Esses módulos podem precisar de entradas no app.config (por exemplo, configuração do WCF). Como os módulos são carregados dinamicamente, não quero ter essas entradas no arquivo app.config do meu aplicativo.
O que eu gostaria de fazer é o seguinte:
- Crie um novo app.config na memória que incorpore as seções de configuração dos módulos
- Diga ao meu aplicativo para usar esse novo app.config
Nota: Não quero substituir o app.config padrão!
Deve funcionar de forma transparente, de modo que, por exemplo ConfigurationManager.AppSettings
use esse novo arquivo.
Durante minha avaliação desse problema, eu vim com a mesma solução que é fornecida aqui: Recarregue app.config com nunit .
Infelizmente, ele parece não fazer nada, porque ainda recebo os dados do app.config normal.
Eu usei esse código para testá-lo:
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);
}
Ele imprime os mesmos valores duas vezes, embora combinedConfig
contenha outros valores além do app.config normal.
Reload app.config with nunit
pode funcionar, não tenho certeza, se usada na entrada do aplicativo antes de qualquer configuração ser carregada.
AppDomain
com o arquivo de configuração apropriado não é uma opção?