3

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

4 回答 4

3

添加config.AppSettings.SectionInformation.ForceSave = true;意志就可以了。YourProject.vshost.exe.config正如贾斯汀所说,您应该在调试时查看。修改保存在那里。

于 2013-05-24T15:19:37.320 回答
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);
于 2013-03-01T23:30:52.520 回答
1

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

config.AppSettings.Settings.Remove("Username");
config.AppSettings.Settings.Add("Username", "NewValue");
config.Save(ConfigurationSaveMode.Modified);
于 2013-05-24T17:12:07.897 回答
0

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

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

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

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

于 2013-02-28T15:02:06.540 回答