1

我在 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

4 回答 4

7

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

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

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

于 2013-05-31T11:00:10.743 回答
4

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

ConfigurationManager.RefreshSection("appSettings");
于 2013-05-31T10:47:33.537 回答
2

app.config 被缓存,更改将在您重新启动应用程序时反映出来。请参阅.Net 框架缓存的 WinForms 中的 app.config 文件吗?

于 2013-05-31T10:35:18.827 回答
0

尝试这个:

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

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

strDayTime = ConfigurationManager.AppSettings["DayTime"];

strDayTime 变量的值在两条线上都发生了变化。

于 2013-05-31T10:30:03.833 回答