Zmiana App.config w czasie wykonywania

Piszę testową aplikację WinForms / C # / .NET 3.5 dla systemu, który rozwijamy i potrzebowaliśmy przełączyć się między plikami .config w czasie wykonywania, ale okazuje się to koszmarem.

Oto scena: aplikacja WinForm ma na celu testowanie WebApp, podzielonej na 5 podsystemów. Proces testowy działa z wiadomościami wysyłanymi między podsystemami, a aby proces ten zakończył się powodzeniem, każdy podsystem musi mieć własny plik .config.

Dla mojej aplikacji testowej napisałem 5 oddzielnych plików konfiguracyjnych. Chciałbym móc przełączać się między tymi 5 plikami w czasie wykonywania, ale problem polega na tym, że mogę wielokrotnie programowo edytować plik .config aplikacji, ale zmiany te zostaną wprowadzone tylko raz. Długo szukałem formularza, aby rozwiązać ten problem, ale nadal nie udało mi się.

Wiem, że definicja problemu może być nieco myląca, ale bardzo bym to docenił, gdyby ktoś mi pomógł.

Z góry dziękuję!

--- AKTUALIZACJA 01-06-10 ---

Jest coś, o czym wcześniej nie wspomniałem. Pierwotnie nasz system jest aplikacją internetową z wywołaniami WCF między każdym podsystemem. Ze względu na testowanie wydajności (używamy ANTS 4) musieliśmy utworzyć lokalną kopię zespołów i odwołać się do nich z projektu testowego. Może to zabrzmieć trochę źle, ale nie mogliśmy znaleźć satysfakcjonującego sposobu pomiaru wydajności aplikacji zdalnej.

--- Koniec aktualizacji ---

Oto co robię:

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");    
}

questionAnswers(4)

yourAnswerToTheQuestion