"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Pourquoi `ConfigurationManager.AppSettings.set` Enregistrer App.config change-t-il?

Pourquoi `ConfigurationManager.AppSettings.set` Enregistrer App.config change-t-il?

Publié le 2025-04-30
Parcourir:611

Why Doesn't `ConfigurationManager.AppSettings.Set` Persist App.Config Changes?

app.config Value Modification Quandary

Dans l'extrait de code fourni, une tentative est faite pour modifier une valeur dans le fichier app.config. Cependant, cette modification ne persiste pas comme prévu. Pour identifier la source de ce problème, plongeons le code fourni et explorons les problèmes potentiels.

Le segment de code:

lang = "Russian";
private void Main_FormClosing(object sender, FormClosingEventArgs e)
{
     System.Configuration.ConfigurationManager.AppSettings.Set("lang", lang);
}

Modifie en effet la valeur de la touche "Lang" dans le fichier app.config. Cependant, comme mis en évidence dans la réponse, cette modification se produit uniquement en mémoire et n'est pas persistée dans le fichier de configuration physique.

La clé pour résoudre ce problème réside dans la reconnaissance que ConfigurationManager.AppSettings.set ("Lang", Lang) ne fait que des modifications temporaires et en mémoire. Pour persister ces modifications dans le fichier app.config, des étapes supplémentaires sont nécessaires.

La réponse introduit un extrait de code révisé spécifiquement adapté à une application de console:

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

Dans ce code:

  1. ConfigurationManager.OPeneXeConfiguration (configurationUserlevel.None) est utilisé pour ouvrir le fichier app.config dans un état de scénario. Valeur.
  2. Plus important encore, la méthode Configuration.Save () est invoquée pour persister ces modifications dans le fichier app.config.
  3. Enfin, ConfigurationManager.RefreshSection ("AppSettings") est utilisé pour rafraîchir la section applicative chargée. valeurs.
  4. En tirant parti de ce code mis à jour, les modifications de valeur apportées au fichier app.config sont désormais persistantes, résolvant le problème et permettant le changement de paramètre de langue souhaité.
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3