动态更改app.config文件中的值

我想修改app.config中appSetting部分的值。 所以我写道,

Console.WriteLine(ConfigurationManager.AppSettings["name"]); Console.Read(); Configuration config=ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); config.AppSettings.Settings["name"].Value = "raja"; config.Save(ConfigurationSaveMode.Modified); ConfigurationManager.RefreshSection("appSettings"); Console.WriteLine(ConfigurationManager.AppSettings["name"]); Console.Read(); 

执行上面的代码后,我validation了app.config是否更改了“name”元素的值。 但没有变化。

我的代码有什么问题? 或者有没有其他方法可以做到这一点?

这段代码适合我:

  Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); config.AppSettings.Settings["test"].Value = "blah"; config.Save(ConfigurationSaveMode.Modified); ConfigurationManager.RefreshSection("appSettings"); 

注意:如果您使用F5运行它,它不会更新解决方案项’app.config’,而是更新bin /文件夹中的’.exe.config’。

您必须手动更新app.config文件

 // Load the app.config file XmlDocument xml = new XmlDocument(); xml.Load(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile); // Do whatever you need, like modifying the appSettings section // Save the new setting xml.Save(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile); 

然后告诉您的应用程序重新加载您修改的任何部分

 ConfigurationManager.RefreshSection("appSettings"); 

扩展Adis H的例子,包括null case(在这个上有点)

  Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); if (config.AppSettings.Settings["HostName"] != null) config.AppSettings.Settings["HostName"].Value = hostName; else config.AppSettings.Settings.Add("HostName", hostName); config.Save(ConfigurationSaveMode.Modified); ConfigurationManager.RefreshSection("appSettings"); 

它工作正常,只需查看bin / Debug文件夹,您可能正在查看项目中的app.config文件。

尝试:

 Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); config.AppSettings.Settings.Remove("configFilePath"); config.AppSettings.Settings.Add("configFilePath", configFilePath); config.Save(ConfigurationSaveMode.Modified,true); config.SaveAs(@"C:\Users\USERNAME\Documents\Visual Studio 2010\Projects\ADI2v1.4\ADI2CE2\App.config",ConfigurationSaveMode.Modified, true); 

XmlReaderSettings _configsettings = new XmlReaderSettings(); _configsettings.IgnoreComments = true;

  XmlReader _configreader = XmlReader.Create(ConfigFilePath, _configsettings); XmlDocument doc_config = new XmlDocument(); doc_config.Load(_configreader); _configreader.Close(); foreach (XmlNode RootName in doc_config.DocumentElement.ChildNodes) { if (RootName.LocalName == "appSettings") { if (RootName.HasChildNodes) { foreach (XmlNode _child in RootName.ChildNodes) { if (_child.Attributes["key"].Value == "HostName") { if (_child.Attributes["value"].Value == "false") _child.Attributes["value"].Value = "true"; } } } } } doc_config.Save(ConfigFilePath);