• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C#关于config文件中的usersettings

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

在调整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>

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C#如何抓取网页数据、分析并且去除Html标签发布时间:2022-07-10
下一篇:
C#winform窗体间传值(使用委托或事件)发布时间:2022-07-10
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap