在运行时更改appconfig

时间:2013-02-28 14:04:16

标签: c# winforms

我正在尝试使用以下代码在运行时更新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");

4 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

只要您对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);

答案 2 :(得分:1)

您无法更新配置。您必须将其删除,然后重新添加。这对我有用,包括在通过Visual Studio进行调试时:

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

答案 3 :(得分:0)

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

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

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

另外,你在Visual Studio中运行它吗?如果从Visual Studio进行调试,它会在bin文件夹中创建副本,因此在实际项目中,除非您查看bin \ debug文件夹中的配置文件,否则不会看到对配置的任何更改。