zoukankan      html  css  js  c++  java
  • c#配置文件app.config 与 Settings.settings

    首先介绍一个桌面程序中的例子,当我们新安装一个软件,软件启动后会有例如新手指导等窗体弹出来,每次都需要自己去关闭它。当然这些软件都会提供例如不再显示等功能。当选择不再显示功能后,这些窗体以后再也不显示了。

    对于这些设置,可以采用下面的一些方法来存储,自定义XML文件,注册表,当然还可以是C#中自带的Settings文件。推荐使用Settings文件。注册表轻易不要使用,自定义XML在使用时需要解析,可以当备选方案。

    下面通过一个例子来展示,

    新建一个WPF项目,

    蓝色背景的便是Settings,

    一个Setting有4个属性Name,Type,Scope,Value。重点讲一下Scope属性,Scope属性有两个值Application,User。这两者区别,Scope值为Application时,对应的Setting在运行时不可以修改。Scope值为User时,对应的Setting在运行时可以修改。

    Setting保存位置:当程序编译后,Setting的值保存在.exe.config文件中,例如:

    在程序中使用Setting,

            // Modify the setting value
            Properties.Settings.Default.DisplayGuide = false;
            // Save setting value
            Properties.Settings.Default.Save();
    

    其中,Settings里的属性根据范围分为两种 “用户”和“应用程序”(其中:应用程序级配置是只读的,而用户级是可读写的。)

    范围为“应用程序”的属性,读取都是从APP.CONFIG里获取,设置也可以通过手工修改App.config改变,但是在程序中无法对其进行赋值,只能读取。

    而范围为“用户”的属性 Settings 在第一次运行时会读取App.config里的初始值

    但是一旦调用Save方法后,Settings里“用户”范围的属性就会保存在系统里面,类似WebForm里的Cookies一样

    从此以后,读取都会从系统里保存的值里读取,手工修改App.config里的“用户”范围的属性不会影响到这些属性,但是在调用Reset方法时会从新从App.config里获取“用户”范围的属性写入到系统中。

            也就是说,settings里“用户”范围的属性总共有3个地方存储。
    

    1、app.config配置文件-----程序第一次运行,之前程序未调用save(),在系统中找不到就会从这里获取

    2、操作系统--------当settings调用save()保存后。

    3、内存----程序启动后,实例化settings对象,该实例在创建的时候从系统(如果系统中没有就如前面提到的从配置文件中获取)读取在内存中。

    一旦我们通过VC#给它添加值后,在工程目录下会生成一个 app.config 文件。

    那么,这两个东西究竟是什么关系?

    添加两个字符串类型的配置值(一个应用程序级,一个是用户级)后:

    Settings.settings
    
    dbzhang800 1+1=2
    app.config
    
    1+1=2 dbzhang800

    尽管都是 xml 文件,两个文件的风格截然不同,后者 app.config 就是我们前一篇中介绍到了 Configuration 文件,从它的configSections中可以看出它有两个自定义段,分别叫applicationSettings 和 userSettings

    操作这样的一个文件,我们可以创建ConfigurationManager命名空间中的ConfigurationSection的派生类,然后通过该类进行操作。

    Settings.settings 看起来相当的简洁,而且和app.config相比,它包含有配置值的类型(比如:Type="System.String")。

    而且,无论我们修改Settings.settings还是app.config,Visual studio都会提示我们,并自动同步到另一个文件中。

    Settings.settings 文件的存在的目的是为了生成一个名为 Settings.Designer.cs 的文件,该文件内的类提供了操作配置文件 (比如:program.exe.config) 的封装类。
    app.config 会被拷贝到应用程序目录下,并变身为 program.exe.config
    

    这样一来,在程序内就可以通过

            Properties.Settings.Default.thisIsUserSettings = "999999999";
            console.WriteLine(Properties.Settings.Default.thisIsAppSettings);
            Properties.Settings.Default.Save();
    

    来操作配置文件了。

    用户配置会被写入到

    C:UsersAdministratorAppDataLocal“项目名称”WPFUserSetting.exe_Url_v4wjaifsqnskfnd0x5zhrlngptsdqoii1.0.0.0user.config

    这些文件中。
    多个.settings文件

    同一个工程中,可以添加多个 .settings 文件,每一个都会生成一个封装类,各对 app.config 中的一部分进行操作。

  • 相关阅读:
    团队作业第四次—项目系统设计与数据库设计
    团队Github实战训练
    第三次团队作业(需求分析)
    团队作业——UML设计
    项目介绍
    Happy Tree Friends——团队展示
    Alpha冲刺 (1/9)
    团队作业第四次—项目系统设计与数据库设计
    团队Github实战训练
    团队作业——需求分析
  • 原文地址:https://www.cnblogs.com/caozhengze/p/11275068.html
Copyright © 2011-2022 走看看