更新/删除appSettings中的条目

时间:2017-03-17 14:08:06

标签: c#

我正在尝试更新其他项目中的配置文件,而不是我所在的项目。 UpdateConfig()工作正常,但DeleteFromConfig()不会删除该条目。 让我们说我有这样一个条目:

添加键=" someKey"值="属性oldValue" /

DeleteFromConfig()将像以前一样离开该条目,但如果我从UpdateConfig注释掉删除行并尝试将值更改为' newValue'它会给我这样的信息:

添加键=" someKey"值="属性oldValue,NEWVALUE" /

AppSettings.Settings.Remove(键)行仅删除值,而不是整个条目。 有没有办法删除整个事情?

  private void UpdateConfig(string path, string key, string value)
        {
            Configuration config = ConfigurationManager.OpenExeConfiguration(path);
            config.AppSettings.Settings.Remove(key);
            config.AppSettings.Settings.Add(key, value);
            config.Save(ConfigurationSaveMode.Modified);
        }

        private void DeleteFromConfig(string path, string key)
        {
            Configuration config = ConfigurationManager.OpenExeConfiguration(path);
            config.AppSettings.Settings.Remove(key);
            config.Save(ConfigurationSaveMode.Modified);
        }

1 个答案:

答案 0 :(得分:0)

使用 XmlDocument

从配置中删除key1
    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
        <appSettings>
            <add key="key1" value="3" />
            <add key="key2" value="1" />
        </appSettings>
    </configuration>

    var xmlDoc = new XmlDocument();
    xmlDoc.Load(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile);

    XmlNode keyNode1 = xmlDoc.SelectSingleNode("//appSettings/add[@key='key1']");
    keyNode1.ParentNode.RemoveChild(keyNode1);

    xmlDoc.Save(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile);
    ConfigurationManager.RefreshSection("appSettings");