在运行时更改appconfig

本文关键字:appconfig 运行时 | 更新日期: 2023-09-27 18:01:45

我正在尝试使用以下代码在运行时更新appconfig文件。我没有得到一个错误,但它没有更新我的配置文件。

System.Configuration.Configuration config =
    ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
string oldValue = config.AppSettings.Settings["Username"].Value;
config.AppSettings.Settings["Username"].Value = "NewValue";
config.Save(ConfigurationSaveMode.Modified);
ConfigurationManager.RefreshSection("appSettings");

在运行时更改appconfig

添加config.AppSettings.SectionInformation.ForceSave = true;就可以了。然后,在调试时,您应该像Justin所说的那样查看YourProject.vshost.exe.config。修改保存在那里

只要你对app.config文件有写权限,下面的代码就可以工作了。

// To Save
System.Configuration.Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
config.AppSettings.Settings["Username"].Value = "NewValue";
config.AppSettings.SectionInformation.ForceSave = true;
config.Save(ConfigurationSaveMode.Modified);
// To Refresh
ConfigurationManager.RefreshSection("appSettings");
System.Configuration.Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);

不能更新配置。你必须把它去掉,然后再加进去。这对我来说很有效,包括在通过Visual Studio调试时:

config.AppSettings.Settings.Remove("Username");
config.AppSettings.Settings.Add("Username", "NewValue");
config.Save(ConfigurationSaveMode.Modified);

当我需要更新配置时,我总是必须使用:

config.AppSettings.SectionInformation.ForceSave = true;
//Save config
//Refresh Config section

否则它不会为我更新配置文件。

还有,你是在Visual Studio中运行这个吗?如果你在Visual Studio中调试,它会在bin文件夹中创建副本,所以在你的实际项目中,你不会看到任何配置更改,除非你查看bin'debug文件夹中的配置文件。