Configuration会造成注释内容丢失
using System.Configuration;
using System.Xml;
namespace Test
{
public static class ConfigHelper
{
//配置文件路径
static string configPath = "config文件完整路径,例如:...\\XX.config";
static Configuration c;
static ConfigHelper()
{
ExeConfigurationFileMap map = new ExeConfigurationFileMap();
map.ExeConfigFilename = configPath;
c = ConfigurationManager.OpenMappedExeConfiguration(map, ConfigurationUserLevel.None);
}
/// <summary>
/// 方法一:保存APPSETTING中对应的键值
/// 使用该方法会造成注释丢失
/// </summary>
/// <param name="key">键</param>
/// <param name="value">值</param>
public static void SaveAppSettingMethod1(string key, string value)
{
//验证key value
//To Do
if (c.AppSettings.Settings[key] != null)
{
c.AppSettings.Settings[key].Value = value;
}
else
{
c.AppSettings.Settings.Add(key, value);
}
c.Save(ConfigurationSaveMode.Modified);
ConfigurationManager.RefreshSection("appsettings");
}
/// <summary>
/// 方法二:保存AppSettings,注释内容不会丢失
/// </summary>
/// <param name="key"></param>
/// <param name="value"></param>
public static void SaveAppSettingsMethod2(string key, string value)
{
//验证key value
//To Do
XmlDocument xml = new XmlDocument();
xml.Load(configPath);
XmlNodeList nodeList = xml.GetElementsByTagName("appSettings");
if (nodeList != null)
{
if (nodeList.Count >= 1)
{
XmlNode node = nodeList[0];
foreach (XmlNode item in node)
{
if (item.NodeType == XmlNodeType.Comment)
{
continue;
}
XmlAttribute xaKey = item.Attributes["key"];
XmlAttribute xaValue = item.Attributes["value"];
if (xaKey != null && xaValue != null && xaKey.Value.Equals(key))
{
xaValue.Value = value;
}
}
}
}
xml.Save(configPath);
}
}
}
using System.Xml;
namespace Test
{
public static class ConfigHelper
{
//配置文件路径
static string configPath = "config文件完整路径,例如:...\\XX.config";
static Configuration c;
static ConfigHelper()
{
ExeConfigurationFileMap map = new ExeConfigurationFileMap();
map.ExeConfigFilename = configPath;
c = ConfigurationManager.OpenMappedExeConfiguration(map, ConfigurationUserLevel.None);
}
/// <summary>
/// 方法一:保存APPSETTING中对应的键值
/// 使用该方法会造成注释丢失
/// </summary>
/// <param name="key">键</param>
/// <param name="value">值</param>
public static void SaveAppSettingMethod1(string key, string value)
{
//验证key value
//To Do
if (c.AppSettings.Settings[key] != null)
{
c.AppSettings.Settings[key].Value = value;
}
else
{
c.AppSettings.Settings.Add(key, value);
}
c.Save(ConfigurationSaveMode.Modified);
ConfigurationManager.RefreshSection("appsettings");
}
/// <summary>
/// 方法二:保存AppSettings,注释内容不会丢失
/// </summary>
/// <param name="key"></param>
/// <param name="value"></param>
public static void SaveAppSettingsMethod2(string key, string value)
{
//验证key value
//To Do
XmlDocument xml = new XmlDocument();
xml.Load(configPath);
XmlNodeList nodeList = xml.GetElementsByTagName("appSettings");
if (nodeList != null)
{
if (nodeList.Count >= 1)
{
XmlNode node = nodeList[0];
foreach (XmlNode item in node)
{
if (item.NodeType == XmlNodeType.Comment)
{
continue;
}
XmlAttribute xaKey = item.Attributes["key"];
XmlAttribute xaValue = item.Attributes["value"];
if (xaKey != null && xaValue != null && xaKey.Value.Equals(key))
{
xaValue.Value = value;
}
}
}
}
xml.Save(configPath);
}
}
}
上述代码中,方法一中使用Configuration来修改AppSettings会造成config文件中<!--XXX-->注释丢失,使用方法二中操作Xml的方法不会丢失注释内容。