2013-04-07 14 views
8

app.config değerini okumak, bir mesaj kutusunda göstermek, değeri harici bir metin düzenleyicisi kullanarak değiştirmek ve son olarak güncel değeri göstermek istiyorum.App.config dosyasını nasıl yeniden yükleyebilirim/yenilerim?

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

Ama çalışmıyor:

Aşağıdaki kodu kullanarak çalıştı. Eski değeri gösterir (harici metin editöründe değiştirmeden önce). Herhangi bir öneriniz var mı?

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

cevap

2

Aşağıdaki kodu kullanarak deneyebilirsiniz:

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

Bu soruya bir cevap değil. –

9

Size bu

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

gibi yapılandırmayı kaydetmek için

deneyin yardımcı ve sonra bu

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

kodunuz benim için çalıştı. Teşekkürler! – jned29

+0

Buradaki anahtar deyim 'config.AppSettings.SectionInformation.ForceSave = true'. – Tarik

2

Bu diskten app.config dosyasını yeniden gerekir: bu kod ne yaptığını açıklıyor kadar ve onun sorunu çözer neden

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