Ho il seguente problema:
Abbiamo un'applicazione che carica i moduli (componenti aggiuntivi). Questi moduli potrebbero richiedere voci in app.config (ad es. Configurazione WCF). Poiché i moduli vengono caricati in modo dinamico, non voglio avere queste voci nel file app.config della mia applicazione.
Quello che vorrei fare è il seguente:
- Creare un nuovo app.config in memoria che incorpora le sezioni di configurazione dai moduli
- Di 'alla mia applicazione di usare quella nuova app.config
Nota: non voglio sovrascrivere app.config predefinito!
Dovrebbe funzionare in modo trasparente, in modo che ad esempio ConfigurationManager.AppSettingsutilizzi quel nuovo file.
Durante la mia valutazione di questo problema, ho trovato la stessa soluzione fornita qui: Ricarica app.config con nunit .
Sfortunatamente, non sembra fare nulla, perché continuo a ottenere i dati dalla normale app.config.
Ho usato questo codice per testarlo:
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);
}
Stampa gli stessi valori due volte, sebbene combinedConfigcontenga valori diversi dalla normale app.config.
Reload app.config with nunitpotrebbe funzionare, non è sicuro, se utilizzato sulla voce dell'applicazione prima che venga caricata una configurazione.
AppDomaincon il file di configurazione appropriato non è un'opzione?