Ich habe das folgende Problem:
Wir haben eine Anwendung, die Module lädt (Add-Ons). Diese Module benötigen möglicherweise Einträge in der app.config (z. B. WCF-Konfiguration). Da die Module dynamisch geladen werden, möchte ich diese Einträge nicht in der Datei app.config meiner Anwendung haben.
Was ich tun möchte, ist Folgendes:
- Erstellen Sie eine neue app.config im Speicher, die die Konfigurationsabschnitte aus den Modulen enthält
- Sagen Sie meiner Anwendung, dass sie diese neue app.config verwenden soll
Hinweis: Ich möchte die Standard-app.config nicht überschreiben!
Es sollte transparent funktionieren, damit zum Beispiel ConfigurationManager.AppSettings
diese neue Datei verwendet wird.
Bei der Bewertung dieses Problems habe ich die gleiche Lösung gefunden, die hier bereitgestellt wird: Laden Sie app.config mit nunit neu .
Leider scheint es nichts zu tun, da ich die Daten immer noch aus der normalen app.config bekomme.
Ich habe diesen Code verwendet, um ihn zu testen:
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);
}
Es gibt zweimal dieselben Werte aus, combinedConfig
enthält jedoch andere Werte als die normale app.config.
Reload app.config with nunit
könnte funktionieren, nicht sicher, ob er beim Anwendungseintrag verwendet wird, bevor eine Konfiguration geladen wird.
AppDomain
mit der entsprechenden Konfigurationsdatei ist keine Option?