Mam następujący problem:
Mamy aplikację, która ładuje moduły (dodatki). Te moduły mogą wymagać wpisów w pliku app.config (np. Konfiguracji WCF). Ponieważ moduły są ładowane dynamicznie, nie chcę, aby te wpisy były w pliku app.config mojej aplikacji.
Chciałbym wykonać następujące czynności:
- Utwórz nowy plik app.config w pamięci, który zawiera sekcje konfiguracyjne z modułów
- Powiedz mojej aplikacji, aby używała tego nowego pliku app.config
Uwaga: nie chcę nadpisywać domyślnego pliku app.config!
Powinien działać w sposób przejrzysty, aby na przykład ConfigurationManager.AppSettings
używał tego nowego pliku.
Podczas oceny tego problemu wpadłem na to samo rozwiązanie, które podano tutaj: Załaduj ponownie plik app.config za pomocą nunit .
Niestety wydaje się, że nic nie daje, ponieważ nadal otrzymuję dane z normalnego pliku app.config.
Użyłem tego kodu, aby to przetestować:
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);
}
Drukuje te same wartości dwa razy, chociaż combinedConfig
zawiera inne wartości niż zwykły plik app.config.
AppDomain
z odpowiednim plikiem konfiguracyjnym nie wchodzi w grę?