琅琊锦官城使者 发表于 2024-5-18 23:09:30

C# app.config配置appSettings标签

AppSettings标签主要用于应用程中的一些配置信息。比如上传文件的路径,需要用到的可能会根据不同环境改变的一些常量等。可以在配置文件添加可执行文件要的配置。
using System;
using System.Collections.Generic;
using System.Configuration;

class Program
{
    static void Main(string[] args)
    {
      string valstr;
      string bl;
      
      bl =ReadAppSettings("Setting1",out valstr);
      if (bl == "true")
            Console.WriteLine("Setting1值:{0}", valstr);
      else
            Console.WriteLine("错误:" + bl);
      bl = ReadAppSettings("Setting2", out valstr);
      if (bl == "true")
            Console.WriteLine("Setting2值:{0}", valstr);
      else
            Console.WriteLine("错误:" + bl);
      bl = AddUpdateAppSettings("NewSetting", "May 7, 2014");
      if (bl == "true")
            Console.WriteLine("添加标签成功。");
      else
            Console.WriteLine("错误:" + bl);
      bl = AddUpdateAppSettings("Setting1", "May 8, 2014");
      if (bl == "true")
            Console.WriteLine("修改标签成功。");
      else
            Console.WriteLine("错误:" + bl);

      List<(string, string)> list;
      bl = ReadAllAppSettings(out list);
      if (bl == "true")
            foreach (var val in list)
            {
                Console.WriteLine("键:{0}, 值:{1},", val.Item1, val.Item2);
            }
      else
            Console.WriteLine("错误:" + bl);
      
      Console.ReadKey();
    }

    /// <summary>
    /// AppSettings标签读取全部值
    /// </summary>
    /// <param name="values">返回List<(string, string)>格式数据,使用out关键字。</param>
    /// <returns>成功返回字符串“true”,失败返回原因。</returns>
    public static string ReadAllAppSettings(out List<(string, string)> values)
    {
      values = null;
      try
      {
            var appSettings = ConfigurationManager.AppSettings;
            if (appSettings.Count == 0) { return "无AppSettings标签。"; }
            values = new List<(string, string)>();
            foreach (var key in appSettings.AllKeys)
            {
                values.Add((key, appSettings));
            }
            return "true";
      }
      catch (ConfigurationErrorsException err)
      {
            return err.Message;
      }
    }
    /// <summary>
    /// AppSettings标签读取指定值
    /// </summary>
    /// <param name="key">指定键</param>
    /// <param name="val">输出值,使用out关键字</param>
    /// <returns>成功返回字符串“true”,失败返回原因。</returns>
    public static string ReadAppSettings(string key, out string val)
    {
      val = null;
      try
      {
            var appSettings = ConfigurationManager.AppSettings;
            val = appSettings;
            if (val == null) return (key + "键值为空。");
            if (val == "") return (key + "键值为空。");
            return "true";
      }
      catch (ConfigurationErrorsException err)
      {
            return err.Message;
      }
    }
    /// <summary>
    /// AppSettings标签写入或更新配置数据
    /// </summary>
    /// <param name="key">键</param>
    /// <param name="value">值</param>
    /// <returns>成功返回字符串“true”,失败返回原因。</returns>
    public static string AddUpdateAppSettings(string key, string value)
    {
      try
      {
            var configFile = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
            var settings = configFile.AppSettings.Settings;
            if (settings == null)
                settings.Add(key, value);
            else
                settings.Value = value;
            configFile.Save(ConfigurationSaveMode.Modified);
            ConfigurationManager.RefreshSection(configFile.AppSettings.SectionInformation.Name);
            return "true";
      }
      catch (ConfigurationErrorsException err)
      {
            return err.Message;
      }
    }
}第一次程序运行结果。
Setting1值:Not Found
Setting1值:Not Found
键:NewSetting, 值:May 7, 2014,
键:Setting1, 值:May 8, 2014,第一次程序运行后,ConsoleApp1.exe.Config数据,会创建标签,数据保存到标签内。
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <appSettings>
      <add key="NewSetting" value="May 7, 2014" />
      <add key="Setting1" value="May 8, 2014" />
    </appSettings>
    <startup>
      <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
    </startup>
</configuration>第二次程序运行结果。
Setting1值:May 8, 2014
Setting1值:Not Found
键:NewSetting, 值:May 7, 2014,
键:Setting1, 值:May 8, 2014,ConsoleApp1.exe.Config数据没有改变。

来源:https://www.cnblogs.com/zwmwcjsj/p/18199740
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: C# app.config配置appSettings标签