在调整app.config的时候遇到了一点问题,把这个问题记录下来,可能我只是没有找到解决方案,问题本身也许并不复杂。

  1. 在VS中通过Properties中的Settings.settings来设置作用范围为用户的配置项,假设此时的配置名称为Port,配置的内容为A

    此时在程序中通过Properties.Settings.Default.Port来获取该配置项,获取到的值为A

  2. 生成解决方案之后,在.exe.config文件中修改该Port配置,将其修改成B

    程序中同样使用Properties.Settings.Default.Port来获取该值,此时获取到的是B

  3. 程序中使用Properties.Settings.Default.Properties["Port"].DefaultValue来获取Port配置,此时获取到的值 是A而不是B

  4. 程序中修改Properties.Settings.Default.Port 为C,并使用Properties.Settings.Default.Save()进行保存,再通过Properties.Settings.Default.Port来获取该配置,此时获取到的值为C。

    注意,这样的修改不会直接去改exe.config文件,而是会在用户目录下的可能是Appdata类似的目录下main的相应项目文件下下生成一个user.config文件,用户的修改在这个config文件中。

  5. 现在遇到的问题是如何在做了上面的1, 2, 3, 4之后,能够获取到值为B的配置,即直接读取config文件中的配置(有该需求的原因是用户可能直接改过这个config文件,而不是通过程序提供的某种方式修改的),而不是使用程序一开始配置的settings,也不使用用户在程序中修改后保存的settings。

顺便记录一下读取配置类型为StringCollection的默认userSettings配置的方法:

使用Xml解析:

using System.Xml;

var prop = Properties.Settings.Default.Properties["Port"].DefaultValue as string;
var doc = new XmlDocument();
doc.LoadXml(prop);
XmlNodeList nodes = doc.SelectSingleNode("ArrayOfString").ChildNodes; var ts = new List<String>();
foreach (XmlNode e in nodes)
s.Add(e.InnerText);

从app.config文件中看,这个配置项大概是这样的:

<userSettings>
<XXXX.Properties.Settings>
<setting name="Port" serializeAs="Xml">
<value>
<ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<string>1</string>
<string>2</string>
<string>3</string>
<string>4</string>
<string>5</string>
<string>6</string>
<string>7</string>
<string>8</string>
<string>9</string>
<string>10</string>
<string>11</string>
</ArrayOfString>
</value>
</setting>
</XXXX.Properties.Settings>
</userSettings>

C# 关于config文件中的usersettings的更多相关文章

  1. c# 如何使用DLL的config文件中的信息

    我知道用c#编写的exe程序可以读取config文件中的配置信息,比如Test.exe,可以在与Test.exe相同目录下放置一个config文件:Test.exe.config,用System.Co ...

  2. 在Web.Config文件中使用configSource,避免动态修改web.config导致asp.net重启(另添加一个Config文件用于管理用户数据)

    原文:在Web.Config文件中使用configSource,避免动态修改web.config导致asp.net重启(另添加一个Config文件用于管理用户数据) 我们都知道,在asp.net中修改 ...

  3. Web.config 文件中的 system.webServer

    Web.config 文件中的 system.webServer 节用于指定适用于 Web 应用程序的 IIS 7.0 设置.system.WebServer 是 configuration 节的子级 ...

  4. web.config文件中配置数据库连接的两种方式

    web.config文件中配置数据库连接的两种方式 标签: 数据库webconfig 2015-04-28 18:18 31590人阅读 评论(1)收藏举报    分类: 数据库(74)  在网站开发 ...

  5. Machine.config 文件中节点<machineKey>的强随机生成

    Machine.config 文件中节点<machineKey>的强随机生成 <machineKey>这个节允许你设置用于加密数据和创建数字签名的服务器特定的密钥.ASP.NE ...

  6. 如何在web.config文件中配置Session变量的生命周期

    实例说明:在网上购物商城中,为了维护在线购物环境,一般只有注册会员才可以购买商品.实现购物功能时,先通过Session变量记录会员的登录名,然后在购买商品页面通过判断会员是否登录确定其能否购买商品. ...

  7. jmeter csv Data Set Config 文件中带引号的数据转换问题(自动添加双引号解决办法)

    1.我们从csv中获取数据,在jmeter中使用这些数据,其中csv的数据如图,有的数据包含引号. 2.问题:我们获取的json数据,被自动添加了双引号 3.解决方式: 在CSV Data Set C ...

  8. Spring基础——在 Spring Config 文件中基于 XML 的 Bean 的自动装配

    一.Spring IOC 容器支持自动装配 Bean,所谓自动装配是指,不需要通过 <property> 或 <constructor-arg> 为 Bean 的属性注入值的过 ...

  9. Web.Config文件中使用configSource

    我们都知道,在asp.net中修改了配置文件web.config后,会导致应用程序重启,所有会话(session)丢失.然而,应用程序的配置信息放在配置文件里是最佳选择,在后台修改了配置后导致所有会话 ...

随机推荐

  1. 【Jenkins持续集成(二)】Windows上安装Jenkins教程

    一.前言 Jenkins是一款开源 CI&CD 软件,用于自动化各种任务,包括构建.测试和部署软件. Jenkins 支持各种运行方式,可通过系统包.Docker 或者通过一个独立的 Java ...

  2. nginx主配置参数详解

    ########Nginx的main(全局配置)文件 #指定nginx运行的用户及用户组,默认为nobody #user nobody; #开启的线程数,一般跟逻辑CPU核数一致 worker_pro ...

  3. Ext.js中树勾选的四种操作

    最近在做控件优化的时候产品提了一个需求,对树的勾选要满足四种勾选方案: 1.点击一次根节点,当根节点和子节点均未选中的情况下,根节点和子节点全都选中. 2.第二次点击根节点,当根节点和部分或全部子节点 ...

  4. .NET Core使用NPOI导出复杂Word详解

    前言: 最近使用NPOI做了个导出Word文档的功能,关于使用.NET Core 导出Word文档的方式有很多.最终我为什么选择了NPOI来实现了这个功能,首先是NPOI是一个开源,免费且容易上手的第 ...

  5. django查询表记录的十三种方法

    django查询表记录的十三种方法 all() 结果为queryset类型 >>> models.Book.objects.all() <QuerySet [<Book: ...

  6. 基于Docker搭建大数据集群(三)Hadoop部署

    主要内容 Hadoop安装 前提 zookeeper正常使用 JAVA_HOME环境变量 安装包 微云下载 | tar包目录下 Hadoop 2.7.7 角色划分 角色分配 NN DN SNN clu ...

  7. Nginx安装教程,ubuntu18.04

    本文介绍Nginx如何安装,操作系统为Ubuntu 18.04.   一.安装 (1)安装git 执行命令:“sudo apt-get install git”. (2)安装aptitude 执行命令 ...

  8. 微项目:一步一步带你使用SpringBoot入门(二)

    今天我们来使用JPA做分页项目并且做讲解 如果是新来的朋友请回上一篇 上一篇:微项目(一) maven整合 在pom文件的dependencies依赖中导入以下依赖 <dependency> ...

  9. 十分钟快速学会Matplotlib基本图形操作

    在学习Python的各种工具包的时候,看网上的各种教程总是感觉各种方法很多很杂,参数的种类和个数也十分的多,理解起来需要花费不少的时间. 所以我在这里通过几个例子,对方法和每个参数都进行详细的解释,这 ...

  10. Python邮件发送功能

    import smtplibfrom email.mime.text import MIMEText_user = "1147016115@qq.com"#发件人_pwd = &q ...