2013-05-31 45 views
1

我作为应用程序配置修改不会反映在代码

<appSettings>  
    <add key="DayTime" value="08-20"/> 
    <add key="NightTime" value="20-08"/> 
</appSettings> 

我tyring同时应用程序运行时修改应用程序配置中的AppConfig文件appsetting部分。在应用程序运行时,我将密钥DayTime更改为11-20。

现在,如果我再次运行此代码以从配置中获取数据,它将显示以前的设置值。

private void btnDayNightSettings_ShowingEditor(object sender, ItemCancelEventArgs e) 
{ 
    string[] strDayTime = ConfigurationManager.AppSettings["DayTime"].Split('-'); 
} 

为什么这样呢?

回答

0

试试这个:

string strDayTime = ConfigurationManager.AppSettings["DayTime"]; 

ConfigurationManager.AppSettings.Set("DayTime", "11-20"); 

strDayTime = ConfigurationManager.AppSettings["DayTime"]; 

对两条线路strDayTime变量的变化值。

1

我有我自己的答案。只需要刷新appSettings部分作为

ConfigurationManager.RefreshSection("appSettings"); 
+0

恐怕这不适合我。 – phillyd

+0

@phillyd它只适用于您的应用程序的发布版本。 –

4

背后为什么AppSetting sectionapp.config文件中,无法在运行时间更新过程中反射的原因如下:

  • 当你添加新的app.config文件它实际上在本地系统中创建一个文件。
  • 当你编译它时,实际上它会在Debug/Release文件夹中创建必要的文件,包括.Exe文件;取决于Build模式。
  • 成功构建后,它还生成一个.config文件,该文件看起来像YourApplicationName.exe.config,它在原始app.config文件中保存了相同的条目。而.Exe总是指这个文件。
  • 因此,无论何时在运行时编辑app.config它实际上都会更新文件,但在YourApplicationName.exe.config文件中更改并未更新,因为它尚未重新编译。

因此,每次需要重新构建到应用程序以反映更改时。

+0

几个小时就把我的脑袋弄坏了..谢谢了! – LastTribunal

相关问题