C# 关于config文件中的usersettings

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

原文地址:https://www.cnblogs.com/yutou2016/p/11243334.html

时间: 2024-10-06 11:55:36

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

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

原文:在Web.Config文件中使用configSource,避免动态修改web.config导致asp.net重启(另添加一个Config文件用于管理用户数据) 我们都知道,在asp.net中修改了配置文件web.config后,会导致应用程序重启,所有 会话(session)丢失.然而,应用程序的配置信息放在配置文件里是最佳选择,在后台修改了配置后导致所有会话丢失是非常不爽的事情,这个时候可将配 置文件中经常需要改变的参数配置节 放到外面来,例如appSetting节. 一.原来的web.

ASP.NET一个网站内存放多个config文件(Web.Config文件中configSource

每个网站里都会有一个web.config文件.修改Web.config文件会导致IIS重启,就是随意的回车一下也会导致重启.微软建议,不要将需要修改的配置内容保存在web.config中.而是单独放在一个config中.但是对于单独存放的config文件,怎么来对其进行修改和读取呢? 例如 可以指定 web.config 中的 appSetting 单独放在 一个 config.config 文件中.通过 configSource 来指定. 一.原来的web.config文件: <?xml ve

config文件中可以配置查询超时时间

web.config配置数据库连接 第一种:获取连接字符串 首先要定义命名空间 system.configuration 1.  string connstr= string constr = ConfigurationManager.AppSettings["connstring"]; web.config文件:加在<appsettings>和</appsettings> 之间 <appsettings> <add key="con

在Web.Config文件中使用configSource,避免动态修改web.config导致asp.net重启

参考: http://www.cnblogs.com/sxw_cug/archive/2013/02/28/1785477.html http://www.cnblogs.com/jiaxa/p/3326631.html?utm_source=tuicool http://www.cnblogs.com/Gyoung/p/3590778.html 我们都知道,在asp.net中修改了配置文件web.config后,会导致应用程序重启,所有会话(session)丢失.然而,应用程序的配置信息放在配

C#中Config文件中,特殊符号的书写方法。

App.config: 1 <?xml version="1.0" encoding="utf-8" ?> 2 <configuration> 3 <startup> 4 <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /> 5 </startup> 6 <connectionS

在web.config文件中,增加“type=&quot;APP.Modules.CommandModule,CommandModules&quot;”节点会导致awesome font字体图标显示为方框框

在配置文件中,增加以下节点,会造成awesome font字体图标不显示 <system.webServer> <modules> <add type="APP.Modules.CommandModule,CommandModules" name="CommandModule" /> </modules> </system.webServer> 解决办法:将上述节点去掉,即可.

Web.Config文件中添加数据库配置文件

1获取所有配置文件节点的类ConfigurationManager 2数据库节点<ConnectionStrings> <add> name ="Sqlconnection" providerName="System.Data.SqlClient" connetionString="server=.;uid=sa;pwd=221100;database=pubs"/> </ConnetionString>

MSDN学习: 加密解密Config文件中的Sections( Encrypting and Decrypting Configuration Sections)

https://msdn.microsoft.com/en-us/library/wfc2t3az(v=vs.100).aspx https://msdn.microsoft.com/en-us/library/zhhddkxy(v=vs.100).aspx 需要使用administrator权限run cmd Cd /d C:\Windows\Microsoft.NET\Framework64\v4.0.30319 加密 aspnet_regiis -pef connectionStrings

C#的app.Config文件中设置,可以选择执行环境(左配置,有程序),app.Config中的appSettings首字母必须小写,符合源码要求

原文地址:https://www.cnblogs.com/gao109214/p/10731683.html