我正在尝试更新其他项目中的配置文件,而不是我所在的项目。 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);
}
答案 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");