2013-04-07 2 views
8

Je souhaite lire la valeur app.config, l'afficher dans une boîte de message, modifier la valeur à l'aide d'un éditeur de texte externe et enfin afficher la valeur mise à jour.Comment recharger/actualiser app.config?

J'ai essayé en utilisant le code suivant:

private void button2_Click(object sender, EventArgs e) 
{ 
    Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); 
    ConfigurationManager.RefreshSection("appSettings"); 
    ConfigurationManager.RefreshSection(config.AppSettings.SectionInformation.Name); 
    MessageBox.Show(ConfigurationManager.AppSettings["TheValue"]); 
} 

Mais cela ne fonctionne pas. Il montre l'ancienne valeur (avant de changer dans l'éditeur de texte externe). Des suggestions?

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
<appSettings> 
    <add key="TheValue" value="abc"/> 
</appSettings> 
</configuration> 

Répondre

2

Vous pouvez essayer d'utiliser le code suivant:

Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); 
KeyValueConfigurationCollection settings = config.AppSettings.Settings;    
// update SaveBeforeExit 
settings["TheValue"].Value = "WXYZ"; 
config.Save(ConfigurationSaveMode.Modified); 

MessageBox.Show(ConfigurationManager.AppSettings["TheValue"]); 
+1

Ce n'est pas une réponse à la question jusqu'à ce qu'il explique ce que le code fait et pourquoi il résout son problème. –

9

Il peut vous aider à

essayer de sauvegarder la configuration comme ce

System.Configuration.Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); 
config.AppSettings.Settings["KeyName"].Value = "NewValue"; 
config.AppSettings.SectionInformation.ForceSave = true; 
config.Save(ConfigurationSaveMode.Modified); 

puis chercher comme ça

ConfigurationManager.RefreshSection("appSettings"); 
System.Configuration.Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); 
+0

votre code a fonctionné pour moi. Merci! – jned29

+0

L'instruction clé ici est 'config.AppSettings.SectionInformation.ForceSave = true'. – Tarik

2

Cela devrait recharger le fichier app.config à partir du disque:

var appSettings = System.Configuration.ConfigurationManager.OpenExeConfiguration(System.Reflection.Assembly.GetEntryAssembly().Location).AppSettings; 
MessageBox.Show(appSettings.Settings["TheValue"].Value);