C# app.config的配置方法及使用技巧

1.app.config配置文件

应用程序配置文件是标准的 XML 文件,XML 标记和属性是区分大小写的。
也是可以按需要更改的,对于一些在程序中需要使用的链接,地址,等常量,开发人员可以使用配置文件来设置,后期只用更改配置文件中的配置,而不必重编译应用程序。
配置文件的根节点是configuration。我们经常访问的是appSettings,它是由.Net预定义配置节,“配置节”可以理解为进行配置一个XML的节点。

我们在VS中创建一个新的桌面应用程序之后,在我们对应的解决方案视图会自动 生成一个名app.config 的配置文件,如果是web应用程序则会对应生成一个web.config的配置文件,为应用程序提供相应的配置。
在这里插入图片描述
当前app.config中为以xml文件,根节点为 configuration,内容如下所示

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
    </startup>
</configuration>

2. appSettings的读写操作

.NET 提供了对appSettings节的访问方法。

在使用ConfigurationManager 之前我们需要引用命名空间

在这里插入图片描述

 public class AppConfigAccess
    {
        private static Configuration config = System.Configuration.ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
        
        
        /// <summary>
        /// 获取指定节点的值
        /// </summary>
        /// <param name="key"></param>
        /// <returns></returns>
        public static string GetAppSetting(string key)
        {
            if (ConfigurationManager.AppSettings.AllKeys.Contains(key))
            {
                string value = config.AppSettings.Settings[key].Value;
                return value;
            }
            else
            {
                return null;
            }
        }
        
        /// <summary>
        /// 增加一个appsetting节点
        /// </summary>
        /// <param name="key"></param>
        /// <param name="value"></param>
        public static void AddAppSetting(string key, string value)
        {
            if (!ConfigurationManager.AppSettings.AllKeys.Contains(key))
            {
                //如果不 存在就增加一个节点
                config.AppSettings.Settings.Add(key, value);
                config.Save(ConfigurationSaveMode.Modified);
            }
            else
            {
                Console.WriteLine("当前节点已存在");
            }
        }
        /// <summary>
        /// 更新appsetting节点
        /// </summary>
        /// <param name="key"></param>
        /// <param name="value"></param>
        public static void UpdateAppSettings(string key, string value)
        {
            if (ConfigurationManager.AppSettings.AllKeys.Contains(key))
            {
                //如果当前节点存在,则更新当前节点
                config.AppSettings.Settings[key].Value = value;
                config.Save(ConfigurationSaveMode.Modified);
            }
            else
            {
                Console.WriteLine("当前节点不存在");
            }
        }


        /// <summary>
        /// 删除appsetting节点
        /// </summary>
        /// <param name="key"></param>
        /// <param name="value"></param>
        public static void DeleteAppSettings(string key, string value)
        {
            if (ConfigurationManager.AppSettings.AllKeys.Contains(key))
            {
                //如果当前节点存在,则删除当前节点
                config.AppSettings.Settings.Remove(key);
                config.Save(ConfigurationSaveMode.Modified);
            }
            else
            {
                Console.WriteLine("当前节点不存在");
            }
        }
    }

在 .NET 1.0 和 1.1 版本中,可以使用 System.Configuration.ConfigurationSettings.AppSettings[“Key”] 来对 key = “Key” 的元素的 value属性 进行访问。


<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <appSettings>
        <add key="DATETIME_EMP_INFO" value="2016-01-01 00:00:00" />
 	   <add key="DATETIME_PER_INFO" value="2016-01-01 00:00:00" />
 	   <add key="DATETIME_PER_INOUT" value="2016-01-01 00:00:00" />
 	   <!--可访问子系统地址-->
	    <add key="url" value="http://***********:9000/sgism/workspace/main/index.jsp" />
 	   <add key="servicePath" value="http://*********:8080/*******/services/Info" />
    </appSettings>
</configuration> 

注:现在.Net FrameWork 2.0中已经明确表示此ConfigurationSettings属性已经废弃,建议改为 ConfigurationManager 或 WebConfigurationManager。

3. connectingStrings的读写操作

ConnectionStrings最主要用于数据库连接,ip地址端口号等。
而AppSettings主要用于应用程中的一些配置信息。比如上传文件的路径,需要用到的可能会根据不同环境改变的一些常量等

 <connectionStrings>
    <add name="sbd" connectionString="Data Source=localhost;port=3306;Initial Catalog=sbd;uid=root;pwd=root;SslMode=none;" providerName="MySql.Data.MySqlClient" />
  </connectionStrings>
class Program
    {
        static void Main(string[] args)
        {
            try
            {
                //设置ConnectionStrings 中指定节点的 字符串 
                ConfigurationManager.ConnectionStrings["sbd"].ConnectionString = "ata Source=localhost;port=3306;Initial Catalog=sbd;uid=root;pwd=root;SslMode=none;";

                //获取ConnectionStrings 中指定节点的 字符串 
                string connection = ConfigurationManager.ConnectionStrings["sbd"].ToString();

                //添加ConnectionStrings 节点
                ConfigurationManager.ConnectionStrings.Add(new ConnectionStringSettings("sbd", "Data Source=localhost;port=3306;Initial Catalog=sbd;uid=root;pwd=root;SslMode=none;", "MySql.Data.MySqlClient"));

                Console.WriteLine("运行完成");
            }
            catch
            {
                Console.WriteLine("运行失败");
            }
            Console.ReadKey();
        }
    }

在运行程序后都会在对应的bin/debug或者bin/Release 下生成下图的.config后缀的文件,在第一次运行时,会自动生成****.exe.config后缀的文件,将app.config中的xml文件属性全部复制在****.exe.config后缀的文件里,在程序运行过程中对配置文件的操作都在该文件中进行,并不直接对app.config文件进行修改。

在这里插入图片描述

以上纯属个人使用过程中遇到的问题,记个随笔,供以后参考,仅代表个人,当前时间内的见解,如有问题,欢迎指正。

  • 15
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MelanceXin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值