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的方法不会丢失注释内容。