Change the value in app.config file dynamically

前端 未结 6 863
孤城傲影
孤城傲影 2020-11-27 15:01

I want to modify a value in appSetting section in app.config. So i wrote,

Console.WriteLine(ConfigurationManager.AppSettings[\"name\"]);
Console.Read();
Conf         


        
相关标签:
6条回答
  • 2020-11-27 15:26
     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);
    
    0 讨论(0)
  • 2020-11-27 15:28

    Expanding on Adis H's example to include the null case (got bit on this one)

     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");
    
    0 讨论(0)
  • 2020-11-27 15:29

    Try:

    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); 
    
    0 讨论(0)
  • 2020-11-27 15:35

    It works, just look at the bin/Debug folder, you are probably looking at app.config file inside project.

    0 讨论(0)
  • 2020-11-27 15:37

    You have to update your app.config file manually

    // 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);
    

    And then tell your application to reload any section you modified

    ConfigurationManager.RefreshSection("appSettings");
    
    0 讨论(0)
  • 2020-11-27 15:42

    This code works for me:

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

    Note: it doesn't update the solution item 'app.config', but the '.exe.config' one in the bin/ folder if you run it with F5.

    0 讨论(0)
提交回复
热议问题