10
votes

Le changement d'appsettings a besoin de redémarrer mon application Comment puis-je éviter?

J'utilise l'application C # .NET 2.0 Windows.

et j'utilise app.config pour mes paramètres d'application.

mais la modification des appsettes ne reflétait pas l'exécution, il a besoin d'une application être redémarré.

Comment puis-je l'éviter.

Voici mon extrait de code Je lisais et écrivez les paramètres de l'application.

Je lis Le réglage comme celui-ci xxx

Je mette à jour la valeur comme celle-ci où le nœud est le nœud de configuration / appsettings actuels xxx


0 commentaires

4 Réponses :


23
votes

Vous pouvez essayer d'appeler xxx

pour actualiser la section AppSettings du fichier à partir du disque. Une fois qu'ils ont été actualisés, vous devriez être capable de lire les nouvelles valeurs.

Je viens de tester cela et cela fonctionne effectivement.


1 commentaires

Il est intéressant de noter que cela ne semble pas rafraîchir la valeur récupérée via ConfigurationManager.appssets ["mysetting"].



1
votes

n'utilisez pas ConfigurationManager pour lire les paramètres, utilisez plutôt:

        System.Configuration.ConfigurationManager.OpenExeConfiguration(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile).AppSettings.Settings["value"];


2 commentaires

Oui cela peut aussi possible, mais ce n'est probablement pas le moyen le plus efficace de le faire.


Ici vous utilisez également ConfigurationManager aussi.



3
votes

Alternativement, vous pouvez créer des «options» singleton pour contenir des paramètres de votre application et effectuer votre lecture / écrit pour vous. Une fois chargé, la modification du .config ne nécessite pas de rechargement, vous définissez simplement une propriété sur le singleton et appelez votre méthode .Save ().

La version "Runtime" de vos paramètres est dans le singleton, il n'est pas nécessaire de lire du disque.


0 commentaires

1
votes
ConfigurationManager.RefreshSection("appSettings");
works!!But be careful that if we are in debug mode, the configuration file can be called xxxxx.vshost.exe.config, where xxxxx is your project name.

0 commentaires