Ich schreibe eine WinForms/C#/.NET 3.5-Testanwendung für das System, das wir entwickeln, und wir mussten zur Laufzeit zwischen den .config-Dateien wechseln ein Albtraum sein.Ändern von App.config zur Laufzeit
Hier ist die Szene: Die WinForms-Anwendung soll eine WebApp testen, die in 5 Subsysteme unterteilt ist. Der Testprozess funktioniert mit Nachrichten, die zwischen den Subsystemen gesendet werden, und damit dieser Prozess erfolgreich ist, muss jedes Subsystem seine eigene .config-Datei haben.
Für meine Testanwendung habe ich 5 separate Konfigurationsdateien geschrieben. Ich wünschte, ich könnte während der Laufzeit zwischen diesen 5 Dateien wechseln, aber das Problem ist: Ich kann die Anwendung .config Datei mehrmals bearbeiten, aber diese Änderungen werden nur einmal wirksam. Ich habe lange nach einem Formular gesucht, um dieses Problem anzugehen, aber ich war immer noch nicht erfolgreich.
Ich weiß, dass die Problemdefinition ein bisschen verwirrend sein kann, aber ich würde es wirklich schätzen, wenn mir jemand half.
Vielen Dank im Voraus!
--- UPDATE 01-06-10 ---
Da ist etwas, das ich vorher nicht erwähnt hat. Ursprünglich ist unser System eine Webanwendung mit WCF-Aufrufen zwischen jedem Subsystem. Aus Gründen der Leistungstests (wir verwenden ANTS 4) mussten wir eine lokale Kopie der Assemblys erstellen und sie aus dem Testprojekt referenzieren. Es mag ein bisschen falsch klingen, aber wir konnten keine zufriedenstellende Möglichkeit finden, die Leistung einer Remote-Anwendung zu messen. Aktualisieren
--- Ende ---
Hier ist, was ich tue:
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");
}
dup/verwandt? http://StackOverflow.com/Questions/1542171/change-app-config-at-Runtime – Hogan
Ich habe diese Ansätze schon probiert ... das Problem ist, das Tag, das ich ändern werde, ist außerhalb. Ich habe auch versucht, neue AppDomains zu erstellen und verschiedene .config-Dateien auf sie zu setzen, aber es hat auch nicht funktioniert. –