app.config 与 Settings.settings

用VC#创建一个GUI程序后,就会有一个 Settings.settings 文件。

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

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

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

  • Settings.settings
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="WpfApplication1.Properties" GeneratedClassName="Settings">
<Profiles />
<Settings>
<Setting Name="thisIsAppSettings" Type="System.String" Scope="Application">
<Value Profile="(Default)">dbzhang800</Value>
</Setting>
<Setting Name="thisIsUserSettings" Type="System.String" Scope="User">
<Value Profile="(Default)">1+1=2</Value>
</Setting>
</Settings>
</SettingsFile>
  • app.config
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
<section name="WpfApplication1.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
</sectionGroup>
<sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
<section name="WpfApplication1.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</sectionGroup>
</configSections>
<userSettings>
<WpfApplication1.Properties.Settings>
<setting name="thisIsUserSettings" serializeAs="String">
<value>1+1=2</value>
</setting>
</WpfApplication1.Properties.Settings>
</userSettings>
<applicationSettings>
<WpfApplication1.Properties.Settings>
<setting name="thisIsAppSettings" serializeAs="String">
<value>dbzhang800</value>
</setting>
</WpfApplication1.Properties.Settings>
</applicationSettings>
</configuration>

尽管都是 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:\Users\dbzhang\AppData\Local\WpfApplication1\WpfApplication1.vshost.ex_Url_nifqt3tilgkwjt1wb1fupctc0ddm3exq\1.0.0.0\user.config

多个.settings文件

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

比如:在前面的基础上,添加新的

  • another.settings
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="WpfApplication2.Properties" GeneratedClassName="another">
<Profiles />
<Settings>
<Setting Name="qter1" Type="System.String" Scope="Application">
<Value Profile="(Default)">abc</Value>
</Setting>
<Setting Name="qter2" Type="System.String" Scope="User">
<Value Profile="(Default)">efg</Value>
</Setting>
</Settings>
</SettingsFile>

此时,app.config 文件

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
<section name="WpfApplication2.Properties.another" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
<section name="WpfApplication2.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
</sectionGroup>
<sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
<section name="WpfApplication2.Properties.another" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</sectionGroup>
</configSections>
<userSettings>
<WpfApplication2.Properties.another>
<setting name="qter2" serializeAs="String">
<value>efg</value>
</setting>
</WpfApplication2.Properties.another>
<WpfApplication2.Properties.Settings>
<setting name="user1" serializeAs="String">
<value>dbzhang800</value>
</setting>
<setting name="user2" serializeAs="String">
<value>dbzhang801</value>
</setting>
</WpfApplication2.Properties.Settings>
...

C#下.NET配置文件使用(二)的更多相关文章

  1. SpringJUnit4加载类目录下(src)和WEF-INF目录下的配置文件

    路径说明: 一.加载类目录下的配置文件 @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration("classpath:ap ...

  2. m_Orchestrate learning system---二十九、什么情况下用数据库做配置字段,什么情况下用配置文件做配置

    m_Orchestrate learning system---二十九.什么情况下用数据库做配置字段,什么情况下用配置文件做配置 一.总结 一句话总结: 配置文件 开发人员 重置 数据库 非开发人员 ...

  3. JAVA Web项目获取src和WebContent目录下的配置文件

    一,获取src下面的配置文件信息 1,结构图如下: package com.binp.properties; import java.io.FileInputStream; import java.i ...

  4. 使用T4模板生成不同部署环境下的配置文件

    在开发企业级应用的时候,通常会有不同的开发环境,比如有开发环境,测试环境,正式环境,生产环境等.在一份代码部署到不同环境的时候,不同环境的配置文件可能需要根据目标环境不同而不同.比如在开发环境中,数据 ...

  5. 直接修改workspace下的配置文件与tomcat下的文件

    项目中直接修改workspace下的配置文件与tomcat下的文件,可是还有错误,例如修改了4个配置文件中的一个配置文件.经查如下: 直接修改workspace下的配置文件与tomcat下的文件,可能 ...

  6. T4模板生成不同部署环境下的配置文件

    使用T4模板生成不同部署环境下的配置文件 在开发企业级应用的时候,通常会有不同的开发环境,比如有开发环境,测试环境,正式环境,生产环境等.在一份代码部署到不同环境的时候,不同环境的配置文件可能需要根据 ...

  7. Linux 下 Vi 配置文件 .vimrc 文件

    Linux 下 Vi 配置文件 .vimrc 文件 配置 vim 的方法是在用户主目录下建立个.vimrc文件,我一般使用root帐户,所以就在/root/下建立一个.vimrc文件:vi /root ...

  8. Android平台下利用zxing实现二维码开发

    Android平台下利用zxing实现二维码开发 现在走在大街小巷都能看到二维码,而且最近由于项目需要,所以研究了下二维码开发的东西,开源的二维码扫描库主要有zxing和zbar,zbar在iPos平 ...

  9. [转]QGis2.9在windows下的编译以及二次开发包下载

    今天心血来潮,将QGis在github上的代码更新后,又编译了一下.留意到源代码包里面的INSTALL文件有更新,于是本次编译完全基于官方的编译说明.编译过程非常顺利,除了在CMake的第一次conf ...

  10. java读取resource目录下的配置文件

    java读取resource目录下的配置文件 1:配置resource目录 下的文件 host: 127.0.0.1 port: 9300 2:读取    / 代表resource目录 InputSt ...

随机推荐

  1. 下列哪个选项是对 WebSocket 的正确描述?

    A.  一种扩展 HTTP 的协议,通信消息以 XML 格式描述. B.  使用 http或https作为URI连接的前缀,并使用与HTTP和HTTPS相同的端口号进行通信. C.  它是一种双向通信 ...

  2. python雪花算法

    雪花算法(Snowflake Algorithm)是一种用于生成唯一的ID的算法,它由Twitter开发.其生成的ID在全局范围内是唯一的,适合高并发场景.雪花算法生成的ID通常是一个64位的整数,包 ...

  3. Python开发一个Instant Messaging(IM)(即时通讯)聊天工具:从理论到实践

    一.引言 在现代社会中,即时通讯工具已经成为人们日常沟通的重要工具.开发一个IM聊天工具不仅能够提高我们的编程技能,还能让我们更好地理解即时通讯系统的原理.本文将详细介绍如何开发一个简单的IM聊天工具 ...

  4. 如何解决Git合并冲突?

    讲个故事先: 一个晴朗的日子,Alex 把远程版本库的修改拉到他的本地版本库. 他修改了名为 abc.txt 的文件,将其暂存(staged),提交(committed),最后推送(pushed)回远 ...

  5. COSBrowser iOS 版 | 如何不打开 App 查看监控数据?

    您是否有遇到这样的场景?当需要实时查看存储监控数据.查看某个存储桶的对象数量,又或者想了解某一个存储类型文件的下载量在当前与前一天的对比情况,是上涨了还是下降了,这时您是否也在经历频繁的打开关闭 Ap ...

  6. 鸿蒙应用开发从入门到入行 - 篇8:Tabs选项卡页签视图切换

    鸿蒙应用开发从入门到入行 第八天 - Tabs选项卡 导读:在本篇文章里,您将掌握使用Tabs选项卡做栏目分类,这是未来应用开发中极为常用的组件 首先说一声抱歉,比较忙很久没更新了.但放心吧,目前该忙 ...

  7. 中电金信:金Gien乐道 | 4月要闻速览,精彩再回顾

    ​ 中国电子党组副书记.总经理李立功一行调研中电金信 ​ 4月10日,中国电子党组副书记.总经理李立功一行赴中电金信进行调研,深入听取了中电金信经营发展情况.研发工作及"源启"行业 ...

  8. [双体系练习]Java基础易错点

    toCharArray()和split()的区别. toCharArray() 这个方法将一个字符串转换成一个字符数组.每个字符都会成为数组中的一个元素. 返回值:一个包含字符串中所有字符的char数 ...

  9. 一场因OpenJDK引发的血案 之JavaFx

    https://zhuanlan.zhihu.com/p/103765203 案发现场 最近做了个项目,本地调试通过了,可在服务器上部署时却编译失败,报错如下 编译失败的原因是缺少javafx.uti ...

  10. Qt/C++开发经验小技巧301-305

    从Qt5.2版本开始,QLineEdit文本框控件提供了setClearButtonEnabled函数用于是否开启右侧的关闭按钮,这种控件非常常见,比如还可以增加个搜索按钮,怎么添加呢,在5.2版本以 ...