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.AppSettings
utilizzi 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 combinedConfig
contenga valori diversi dalla normale app.config.
Reload app.config with nunit
potrebbe funzionare, non è sicuro, se utilizzato sulla voce dell'applicazione prima che venga caricata una configurazione.
AppDomain
con il file di configurazione appropriato non è un'opzione?