Я пишу тестовое приложение WinForms/C#/.NET 3.5 для системы, которую мы разрабатываем, и нам пришлось переключаться между файлами .config во время выполнения, но это оказалось кошмаром.
Вот сцена: приложение WinForms предназначено для тестирования WebApp, разделенного на 5 подсистем. Процесс тестирования работает с сообщениями, отправляемыми между подсистемами, и для того, чтобы этот процесс был успешным, каждая подсистема должна иметь свой собственный файл .config.
Для своего тестового приложения я написал 5 отдельных файлов конфигурации. Я хотел бы иметь возможность переключаться между этими 5 файлами во время выполнения, но проблема в том, что я могу программно редактировать файл .config приложения много раз, но эти изменения вступят в силу только один раз. Я долго искал форму для решения этой проблемы, но так и не добился успеха.
Я знаю, что определение проблемы может быть немного запутанным, но я был бы очень признателен, если бы кто-нибудь помог мне.
Заранее спасибо!
--- ОБНОВЛЕНИЕ 06.01.10 ---
Есть кое-что, о чем я не упомянул раньше. Изначально наша система представляла собой веб-приложение с вызовами WCF между каждой подсистемой. Из соображений тестирования производительности (мы используем ANTS 4) нам пришлось создать локальную копию сборок и ссылаться на них из тестового проекта. Это может показаться немного неправильным, но мы не смогли найти удовлетворительного способа измерения производительности удаленного приложения.
--- Завершить обновление ---
Вот что я делаю:
public void UpdateAppSettings(string key, string value)
{
XmlDocument xmlDoc = XmlDocument.Load(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile);
foreach (XmlElement item in xmlDoc.DocumentElement)
{
foreach (XmlNode node in item.ChildNodes)
{
if (node.Name == key)
{
node.Attributes[0].Value = value;
break;
}
}
}
xmlDoc.Save(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile);
System.Configuration.ConfigurationManager.RefreshSection("section/subSection");
}