App Config修改未反映在代码中

时间:2013-05-31 10:20:56

标签: c# winforms app-config

我在appconfig文件中有一个appsetting部分

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

我在应用程序运行时修改应用程序配置。在应用程序运行时,我将键DayTime更改为11-20。

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

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

为什么会这样?

4 个答案:

答案 0 :(得分:5)

在运行时更新期间未反映AppSetting section文件中app.config的原因如下:

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

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

答案 1 :(得分:2)

app.config被缓存,更改将反映您重新启动应用程序的时间。见is app.config file in WinForms cached by .Net framework?

答案 2 :(得分:1)

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

即可
ConfigurationManager.RefreshSection("appSettings");

答案 3 :(得分:0)

试试这个:

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

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

strDayTime = ConfigurationManager.AppSettings["DayTime"];

strDayTime变量的值在两行都有变化。