App.Config-Wertänderungsproblem
Im bereitgestellten Codeausschnitt wird versucht, einen Wert in der App.Config-Datei zu ändern . Diese Änderung bleibt jedoch nicht wie erwartet bestehen. Um die Ursache dieses Problems zu ermitteln, untersuchen wir den bereitgestellten Code und untersuchen mögliche Probleme.
Das Codesegment:
lang = "Russian"; private void Main_FormClosing(object sender, FormClosingEventArgs e) { System.Configuration.ConfigurationManager.AppSettings.Set("lang", lang); }
ändert tatsächlich den Wert des Schlüssels „lang“ im App.Config-Datei. Wie in der Antwort hervorgehoben, erfolgt diese Änderung jedoch ausschließlich im Speicher und wird nicht in der physischen Konfigurationsdatei gespeichert.
Der Schlüssel zur Lösung dieses Problems liegt in der Erkenntnis, dass ConfigurationManager.AppSettings.Set("lang", lang) nimmt nur vorübergehende Änderungen im Speicher vor. Um diese Änderungen an der App.Config-Datei beizubehalten, sind zusätzliche Schritte erforderlich.
Die Antwort führt einen überarbeiteten Codeausschnitt ein, der speziell auf eine Konsolenanwendung zugeschnitten ist:
class Program { static void Main(string[] args) { UpdateSetting("lang", "Russian"); } private static void UpdateSetting(string key, string value) { Configuration configuration = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); configuration.AppSettings.Settings[key].Value = value; configuration.Save(); ConfigurationManager.RefreshSection("appSettings"); } }
In diesem Code:
Durch die Nutzung dieses aktualisierten Codes werden die an der App.Config-Datei vorgenommenen Wertänderungen nun erfolgreich beibehalten, wodurch das Problem behoben und dies ermöglicht wird gewünschte Spracheinstellung ändern.
Das obige ist der detaillierte Inhalt vonWarum behält „ConfigurationManager.AppSettings.Set' App.Config-Änderungen nicht bei?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!