当前位置: 代码网 > it编程>编程语言>C# > C# app.config配置appSettings标签

C# app.config配置appSettings标签

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

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

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com