2017-03-17 43 views
0

我試圖從其他項目更新配置文件,而不是我所在的那個項目。 UpdateConfig()可以正常工作,但DeleteFromConfig()不會刪除條目。 比方說,我有一個這樣的條目:更新/刪除appSettings中的條目

添加鍵=「someKey」值=「屬性oldValue」/

DeleteFromConfig()離開入口和以前一樣,但如果我註釋掉UpdateConfig刪除線試圖改變價值「newValue'it給了我這樣的:

添加鍵= 「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

因爲配置文件是XML從配置的鍵1,你可以只用總的XMLDocument編輯。 –

回答

0

刪除使用的XmlDocument

<?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");