- A+
所属分类:.NET技术
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[key])); } 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[key]; 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[key] == null) settings.Add(key, value); else settings[key].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数据,会创建<appSettings>标签,数据保存到标签内。
<?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数据没有改变。