应用配置修改未反映在代码中

本文关键字:代码 配置 修改 应用 | 更新日期: 2023-09-27 18:16:26

我在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('-');
}

应用配置修改未反映在代码中

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

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

所以每次你需要重新构建你的应用来反映这些变化

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

ConfigurationManager.RefreshSection("appSettings");

app。配置被缓存,更改将在重新启动应用程序时反映出来。看到的应用程序配置文件在WinForms缓存的。net框架?

试试这个:

string strDayTime = ConfigurationManager.AppSettings["DayTime"];
ConfigurationManager.AppSettings.Set("DayTime", "11-20");
strDayTime = ConfigurationManager.AppSettings["DayTime"];

strDayTime变量的值在两行都改变