首页 > 编程语言 >C# app.config配置appSettings标签

C# app.config配置appSettings标签

时间:2024-05-18 20:41:12浏览次数:16  
标签:Console string WriteLine C# appSettings app bl key true

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

标签:Console,string,WriteLine,C#,appSettings,app,bl,key,true
From: https://www.cnblogs.com/zwmwcjsj/p/18199740

相关文章

  • 编译mmdetection3d时,无root权限下为虚拟环境单独创建CUDA版本
    在跑一些深度学习代码的时候,如果需要使用mmdetection3d框架,下载的pytorch的cudatoolkit最好需要和本机的cuda版本是一样的,即输入nvcc-V命令后显示的版本一样。但是如果是在学校里,一般是服务器管理员装的cuda驱动是啥版本,cudatoolkit就是啥版本,且非root用户改变不了。但是有非ro......
  • buuctf 考毛概前复现的两道misc题
    BUUCTFmisc神奇的二维码and梅花香自苦寒来最近要考毛概,所以就匆匆写了BUUCTF上的几道题,不过积少成多,不能太心急,挑了两道让我印象比较深刻的题复现一下。神奇的二维码第一道是二维码类型的misc题,这题我只能说出题人是真的boring,是无聊到什么程度居然会想出这种题目首先把压缩......
  • XYCTF2024
    XYCTF2024warmup又是md5源码<?phpinclude'next.php';highlight_file(__FILE__);$XYCTF="Warmup";extract($_GET);if(isset($_GET['val1'])&&isset($_GET['val2'])&&$_GET['val1']!=$......
  • HTML 28 - Javascript
    Ascriptisasmallpieceofprogramthatcanaddinteractivitytoourwebsites.Forexample,ascriptcouldgenerateapop-upalertboxmessage,orprovideadropdownmenu.ThisscriptcouldbewrittenusingJavaScriptorVBScript.Nowadays,onlyJavaScr......
  • HTML 31 - Layout using CSS
     NowweallhavelearnedvarioustechniquestodesignanHTMLlayoutincludingtablesandsemanticelements.Weareverymuchcomfortableandefficientatcreatinglayouts.Inthistutorial,wearegoingtolookathowCSSpropertieshelpinarrangingdi......
  • m基于BP译码算法的LDPC编译码matlab误码率仿真,对比不同的码长
    1.算法仿真效果matlab2022a仿真结果如下:   2.算法涉及理论知识概要       低密度奇偶校验码(Low-DensityParity-Check,LDPC)是一种高效的前向纠错码,因其优越的纠错性能和近似香农限的接近程度而广泛应用于现代通信系统中。LDPC码的编译码算法众多,其中BeliefProp......
  • 免费解锁Windows 11的HEVC支持:轻松播放4K电影的详细步骤
    Windows11安装完成后,用电影和电视这个应用打开4K或者8K的MP4文件时,提示缺少解码器以下就是本人解决过程第一步:查找HEVC扩展的页面直接浏览器打开:https://apps.microsoft.com/,搜索HEVC扩展,得到以下页面)复制地址栏的网址,如上图红框第二步:获取HEVC扩展的下载链接直接浏览器......
  • HTML 27 - Adding Favicon
     WhatisaHTMLFavicon?Afaviconisasmallimagethatrepresentsyourwebsiteandhelpsusersidentifyitamongmultipletabs,bookmarksandsearchresults.Itcanbeinvariousformats,suchasICO,PNG,GIF,JPEG,orSVG,butICOisthemostwidely......
  • Nginx 支持 CORS
    Nginx支持CORS先说下最终增加的配置:add_headerAccess-Control-Allow-Originhttps://a.domain.comalways;add_headerAccess-Control-Allow-Headers'content-type,authorization';add_headerAccess-Control-Max-Age3600;if($request_method='OPTIONS'......
  • Codeforces 401B Sereja and Contests 题解
    题目简述Sereja是一名程序员,他喜欢参加Codesorfes比赛。不过,乌兹兰的网络连接不太好,所以Sereja有时会跳过比赛。Codesorfes有两种类型的比赛,分为Div1和Div2。Div1和Div2这两轮可以同时进行(Div1轮不能在没有Div2的情况下进行)。每一轮都有一个唯一的标识符,各轮按......