翼度科技»论坛 编程开发 .net 查看内容

C# app.config配置appSettings标签

5

主题

5

帖子

15

积分

新手上路

Rank: 1

积分
15
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数据没有改变。

来源:https://www.cnblogs.com/zwmwcjsj/p/18199740
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

上一篇: C#反射

下一篇: C#特性

来自手机

举报 回复 使用道具