У мене є така проблема:
У нас є додаток, який завантажує модулі (додає додатки). Ці модулі можуть потребувати записи в app.config (наприклад, конфігурація WCF). Оскільки модулі завантажуються динамічно, я не хочу, щоб ці записи були у файлі app.config моєї програми.
Я хотів би зробити таке:
- Створіть нову програму app.config в пам'яті, яка включає в себе розділи конфігурації з модулів
- Скажіть моїй програмі використовувати цей новий app.config
Примітка. Я не хочу перезаписувати app.config за замовчуванням!
Він повинен працювати прозоро, так що, наприклад, ConfigurationManager.AppSettingsвикористовує цей новий файл.
Під час моєї оцінки цієї проблеми я придумав те саме рішення, що і тут: Reload app.config with nunit .
На жаль, це, здається, нічого не робить, тому що я все одно отримую дані із звичайного app.config.
Я використовував цей код, щоб перевірити його:
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);
}
Він друкує ті самі значення подвійних значень, хоча combinedConfigмістить інші значення, ніж звичайний app.config.
Reload app.config with nunitможе працювати, не впевнений, якщо він використовується при введенні програми перед завантаженням будь-якої конфігурації.
AppDomainз відповідним файлом конфігурації - це не варіант?