У мене є така проблема:
У нас є додаток, який завантажує модулі (додає додатки). Ці модулі можуть потребувати записи в 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
з відповідним файлом конфігурації - це не варіант?