Изменение App.config во время выполнения

Я пишу тестовое приложение WinForms / C # / .NET 3.5 для системы, которую мы разрабатываем, и у нас возникла необходимость переключаться между файлами .config во время выполнения, но это оказывается кошмаром.

Вот сцена: приложение WinForms предназначено для тестирования WebApp, разделенного на 5 подсистем. Процесс тестирования работает с сообщениями, отправляемыми между подсистемами, и для успешного выполнения этого процесса каждая подсистема должна иметь свой собственный файл .config.

Для моего тестового приложения я написал 5 отдельных файлов конфигурации. Я хотел бы иметь возможность переключаться между этими 5 файлами во время выполнения, но проблема заключается в следующем: я могу программно редактировать файл .config приложения несколько раз, но эти изменения вступят в силу только один раз. Я долго искал форму для решения этой проблемы, но все равно не увенчался успехом.

Я знаю, что определение проблемы может быть немного запутанным, но я был бы очень признателен, если бы кто-то помог мне.

Заранее спасибо!

--- ОБНОВЛЕНИЕ 01-06-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");    
}

Ответы на вопрос(4)

Ваш ответ на вопрос