#region 修改config文件 /// <summary> /// 修改配置文件 /// </summary> /// <param name="key">节点名称</param> /// <param name="value">节点数据</param> public static void SetConfigValue(string key, string value) { bool isModified = false; foreach (string keyExist in ConfigurationManager.AppSettings) { if (keyExist == key) { isModified = true; } } // Open App.Config of executable Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); // You need to remove the old settings object before you can replace it if (isModified) { config.AppSettings.Settings.Remove(key); } // Add an Application Setting. config.AppSettings.Settings.Add(key, value); // Save the changes in App.config file. config.Save(ConfigurationSaveMode.Modified); // Force a reload of a changed section. ConfigurationManager.RefreshSection("appSettings"); } #endregion
Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
config.AppSettings.Settings.Remove("Key");
config.AppSettings.Settings.Add("Key", "新的值");
config.Save();
#region 修改config文件
/// <summary>
/// 修改配置文件
/// </summary>
/// <param name="key">节点名称</param>
/// <param name="value">节点数据</param>
public static void SetConfigValue(string key, string value)
{
bool isModified = false;
foreach (string keyExist in ConfigurationManager.AppSettings)
{
if (keyExist == key)
{
isModified = true;
}
}
// Open App.Config of executable
Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
// You need to remove the old settings object before you can replace it
if (isModified)
{
config.AppSettings.Settings.Remove(key);
}
// Add an Application Setting.
config.AppSettings.Settings.Add(key, value);
// Save the changes in App.config file.
config.Save(ConfigurationSaveMode.Modified);
// Force a reload of a changed section.
ConfigurationManager.RefreshSection("appSettings");
} #endregion
System.Configuration.ConfigurationSettings.AppSettings["Key"];
但是现在FrameWork2.0已经明确表示此属性已经过时。并建议改为ConfigurationManager或WebConfigurationManager。并且AppSettings属性是只读的,并不支持修改属性值.
但是要想调用ConfigurationManager必须要先在工程里添加system.configuration.dll程序集的引用。(在解决方案管理器中右键点击工程名称,在右键菜单中选择添加引用,.net TablePage下即可找到)添加引用后可以用 String str = ConfigurationManager.AppSettings["Key"]来获取对应的值了。
更新配置文件:
Configuration cfa = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
//添加
cfa.AppSettings.Settings.Add("key", "Name")
//修改
cfa.AppSettings.Settings["BrowseDir"].Value = "name";
最后调用
cfa.Save();
当前的配置文件更新成功。
ConfigurationManager.RefreshSection("appSettings");// 刷新命名节,在下次检索它时将从磁盘重新读取它。记住应用程序要刷新节点参考:http://www.cnblogs.com/henw/archive/2012/01/31/2333783.html
以前写的一个小方法 private bool saveSettings(string filePath)
{
System.IO.File.SetAttributes(filePath, System.IO.FileAttributes.Normal);
List<AppSetting> appSettings = dgv_App.DataSource as List<AppSetting>;
List<ConnSetting> connSettings = dgv_Conn.DataSource as List<ConnSetting>;
XmlDocument doc = new XmlDocument();
doc.Load(filePath); #region 保存修改后的配置项
XmlNode appNode = doc.DocumentElement.SelectSingleNode("appSettings");
if (appNode != null)
{
foreach (AppSetting appItem in appSettings)
{
foreach (XmlNode item in appNode.ChildNodes)
{
if (item is XmlElement)
{
if ((item as XmlElement).Attributes["key"].Value == appItem.Key)
(item as XmlElement).Attributes["value"].Value = appItem.Value;
}
}
}
}
#endregion #region 保存修改后的连接字串 XmlNode conNode = doc.DocumentElement.SelectSingleNode("connectionStrings");
if (conNode != null)
{
foreach (ConnSetting connItem in connSettings)
{
foreach (XmlNode item in conNode.ChildNodes)
{
if (item is XmlElement)
{
if ((item as XmlElement).Attributes["name"].Value == connItem.ConnName)
(item as XmlElement).Attributes["connectionString"].Value = connItem.ConnString;
}
}
}
} #endregion
doc.Save(filePath);
return true;
}