2013-04-07 12 views
8

Desidero leggere il valore app.config, visualizzarlo in una finestra di messaggio, modificare il valore utilizzando un editor di testo esterno e infine mostrare il valore aggiornato.Come ricaricare/aggiornare app.config?

Ho provato ad utilizzare il seguente codice:

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

Ma non funziona. Mostra il vecchio valore (prima di cambiare nell'editor di testo esterno). Qualche suggerimento?

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

risposta

2

Puoi provare a utilizzare il seguente codice:

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

Questa non è una risposta alla domanda fino a che non spiega che cosa fa il codice e perché risolve il suo problema. –

9

può aiutare a

cercare di salvare la configurazione come questo

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

e poi prenderlo come questo

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

il tuo codice ha funzionato per me. Grazie! – jned29

+0

L'istruzione chiave qui è 'config.AppSettings.SectionInformation.ForceSave = true'. – Tarik

2

Questo dovrebbe ricaricare il file app.config dal disco:

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