C# app.config配置appSettings标签

打印 上一主题 下一主题

主题 1044|帖子 1044|积分 3132

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
AppSettings标签重要用于应用程中的一些配置信息。好比上传文件的路径,需要用到的可能会根据不同环境改变的一些常量等。可以在配置文件添加可执行文件要的配置。
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Configuration;
  4. class Program
  5. {
  6.     static void Main(string[] args)
  7.     {
  8.         string valstr;
  9.         string bl;
  10.       
  11.         bl =ReadAppSettings("Setting1",out valstr);
  12.         if (bl == "true")
  13.             Console.WriteLine("Setting1值:{0}", valstr);
  14.         else
  15.             Console.WriteLine("错误:" + bl);
  16.         bl = ReadAppSettings("Setting2", out valstr);
  17.         if (bl == "true")
  18.             Console.WriteLine("Setting2值:{0}", valstr);
  19.         else
  20.             Console.WriteLine("错误:" + bl);
  21.         bl = AddUpdateAppSettings("NewSetting", "May 7, 2014");
  22.         if (bl == "true")
  23.             Console.WriteLine("添加标签成功。");
  24.         else
  25.             Console.WriteLine("错误:" + bl);
  26.         bl = AddUpdateAppSettings("Setting1", "May 8, 2014");
  27.         if (bl == "true")
  28.             Console.WriteLine("修改标签成功。");
  29.         else
  30.             Console.WriteLine("错误:" + bl);
  31.         List<(string, string)> list;
  32.         bl = ReadAllAppSettings(out list);
  33.         if (bl == "true")
  34.             foreach (var val in list)
  35.             {
  36.                 Console.WriteLine("键:{0}, 值:{1},", val.Item1, val.Item2);
  37.             }
  38.         else
  39.             Console.WriteLine("错误:" + bl);
  40.       
  41.         Console.ReadKey();
  42.     }
  43.     /// <summary>
  44.     /// AppSettings标签读取全部值
  45.     /// </summary>
  46.     /// <param name="values">返回List<(string, string)>格式数据,使用out关键字。</param>
  47.     /// <returns>成功返回字符串“true”,失败返回原因。</returns>
  48.     public static string ReadAllAppSettings(out List<(string, string)> values)
  49.     {
  50.         values = null;
  51.         try
  52.         {
  53.             var appSettings = ConfigurationManager.AppSettings;
  54.             if (appSettings.Count == 0) { return "无AppSettings标签。"; }
  55.             values = new List<(string, string)>();
  56.             foreach (var key in appSettings.AllKeys)
  57.             {
  58.                 values.Add((key, appSettings[key]));
  59.             }
  60.             return "true";
  61.         }
  62.         catch (ConfigurationErrorsException err)
  63.         {
  64.             return err.Message;
  65.         }
  66.     }
  67.     /// <summary>
  68.     /// AppSettings标签读取指定值
  69.     /// </summary>
  70.     /// <param name="key">指定键</param>
  71.     /// <param name="val">输出值,使用out关键字</param>
  72.     /// <returns>成功返回字符串“true”,失败返回原因。</returns>
  73.     public static string ReadAppSettings(string key, out string val)
  74.     {
  75.         val = null;
  76.         try
  77.         {
  78.             var appSettings = ConfigurationManager.AppSettings;
  79.             val = appSettings[key];
  80.             if (val == null) return (key + "键值为空。");
  81.             if (val == "") return (key + "键值为空。");
  82.             return "true";
  83.         }
  84.         catch (ConfigurationErrorsException err)
  85.         {
  86.             return err.Message;
  87.         }
  88.     }
  89.     /// <summary>
  90.     /// AppSettings标签写入或更新配置数据
  91.     /// </summary>
  92.     /// <param name="key">键</param>
  93.     /// <param name="value">值</param>
  94.     /// <returns>成功返回字符串“true”,失败返回原因。</returns>
  95.     public static string AddUpdateAppSettings(string key, string value)
  96.     {
  97.         try
  98.         {
  99.             var configFile = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
  100.             var settings = configFile.AppSettings.Settings;
  101.             if (settings[key] == null)
  102.                 settings.Add(key, value);
  103.             else
  104.                 settings[key].Value = value;
  105.             configFile.Save(ConfigurationSaveMode.Modified);
  106.             ConfigurationManager.RefreshSection(configFile.AppSettings.SectionInformation.Name);
  107.             return "true";
  108.         }
  109.         catch (ConfigurationErrorsException err)
  110.         {
  111.             return err.Message;
  112.         }
  113.     }
  114. }
复制代码
第一次程序运行结果。
  1. Setting1值:Not Found
  2. Setting1值:Not Found
  3. 键:NewSetting, 值:May 7, 2014,
  4. 键:Setting1, 值:May 8, 2014,
复制代码
第一次程序运行后,ConsoleApp1.exe.Config数据,会创建标签,数据保存到标签内。
  1. <?xml version="1.0" encoding="utf-8" ?>
  2. <configuration>
  3.     <appSettings>
  4.         <add key="NewSetting" value="May 7, 2014" />
  5.         <add key="Setting1" value="May 8, 2014" />
  6.     </appSettings>
  7.     <startup>
  8.         <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
  9.     </startup>
  10. </configuration>
复制代码
第二次程序运行结果。
  1. Setting1值:May 8, 2014
  2. Setting1值:Not Found
  3. 键:NewSetting, 值:May 7, 2014,
  4. 键:Setting1, 值:May 8, 2014,
复制代码
ConsoleApp1.exe.Config数据没有改变。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

我可以不吃啊

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表