App.config文件

1. 配置文件概述: 应用程序配置文件是标准的 XML 文件,XML 标记和属性是区分大小写的。它是可以按需要更改的,开发人员可以使用配置文件来更改设置,而不必重编译应用程序。配置文件的根节点是configuration。我们经常访问的是appSettings,它是由.Net预定义配置节。我们经常使用的配置文件的架构是象下面的形式。先大概有个印象,通过后面的实例会有一个比较清楚的认识。下面的“配置节”可以理解为进行配置一个XML的节点。

常见配置文件模式:

<configuration> 
<configSections> //配置节声明区域,包含配置节和命名空间声明 
<section> //配置节声明 
  <sectionGroup> //定义配置节组 
   <section> //配置节组中的配置节声明 
<appSettings> //预定义配置节 
<Custom element for configuration section> //配置节设置区域

2. 只有appSettings节的配置文件及访问方法

下面是一个最常见的应用程序配置文件的例子,只有appSettings节。 
程序代码: [ 复制代码到剪贴板 ] 
<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
<appSettings> 
<add key="connectionstring" value="User ID=sa;Data Source=.;Password=;Initial Catalog=test;Provider=SQLOLEDB.1;" /> 
<add key="TemplatePATH" value="Template" /> 
</appSettings> 
</configuration>

下面来看看这样的配置文件如何方法。

程序代码: [ 复制代码到剪贴板 ] 
string _connectionString=ConfigurationSettings.AppSettings["connectionstring"];

使用ConfigurationSettings类的静态属性AppSettings就可以直接方法配置文件中的配置信息。这个属性的类型是NameValueCollection。

3. 自定义配置文件

3.1 自定义配置节

一个用户自定义的配置节,在配置文件中分为两部分:一是在<configSections></ configSections> 配置节中声明配置节(上面配置文件模式中的“<section>”),另外是在<configSections>< / configSections >之后设置配置节(上面配置文件模式中的“< Custom element for configuration section>”),有点类似一个变量先声明,后使用一样。声明一个配置文件的语句如下:

<section name=" " type=" "/> 
<section>:声明新配置节,即可创建新配置节。

name:自定义配置节的名称。

type:自定义配置节的类型,主要包括System.Configuration.SingleTagSectionHandler、 System.Configuration.DictionarySectionHandler、 System.Configuration.NameValueSectionHandler。

不同的type不但设置配置节的方式不一样,最后访问配置文件的操作上也有差异。下面我们就举一个配置文件的例子,让它包含这三个不同的type。

程序代码:
<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
<configSections> 
<section name="Test1" type="System.Configuration.SingleTagSectionHandler"/> 
<section name="Test2" type="System.Configuration.DictionarySectionHandler"/> 
<section name="Test3" type="System.Configuration.NameValueSectionHandler" /> 
</configSections>

<Test1 setting1="Hello" setting2="World"/> 
<Test2> 
<add key="Hello" value="World" /> 
</Test2> 
<Test3> 
<add key="Hello" value="World" /> 
</Test3> 
</configuration>

我们对上面的自定义配置节进行说明。在声明部分使用
<section name="Test1" type= "System.Configuration.SingleTagSectionHandler"/>声明了一个配置节它的名字叫Test1,类型为SingleTagSectionHandler。在设置配置节部分使用 <Test1 setting1= "Hello" setting2="World"/>设置了一个配置节,它的第一个设置的值是Hello,第二个值是World,当然还可以有更多。其它的两个配置节和这个类似。 
下面我们看在程序中如何访问这些自定义的配置节。我们用过ConfigurationSettings类的静态方法GetConfig来获取自定义配置节的信息。

程序代码: public static object GetConfig(string sectionName);

下面是访问这三个配置节的代码:

程序代码: 
//访问配置节Test1 
IDictionary IDTest1 = (IDictionary)ConfigurationSettings.GetConfig("Test1"); 
string str = (string)IDTest1["setting1"] +" "+(string)IDTest1["setting2"]; 
MessageBox.Show(str); //输出Hello World

//访问配置节Test1的方法2 
string[] values1=new string[IDTest1.Count]; 
IDTest1.Values.CopyTo(values1,0); 
MessageBox.Show(values1[0]+" "+values1[1]); //输出Hello World

//访问配置节Test2 
IDictionary IDTest2 = (IDictionary)ConfigurationSettings.GetConfig("Test2"); 
string[] keys=new string[IDTest2.Keys.Count]; 
string[] values=new string[IDTest2.Keys.Count]; 
IDTest2.Keys.CopyTo(keys,0); 
IDTest2.Values.CopyTo(values,0); 
MessageBox.Show(keys[0]+" "+values[0]);

//访问配置节Test3 
NameValueCollection nc=(NameValueCollection)ConfigurationSettings.GetConfig("Test3"); 
MessageBox.Show(nc.AllKeys[0].ToString()+" "+nc["Hello"]); //输出Hello World

通过上面的代码我们可以看出,不同的type通过GetConfig返回的类型不同,具体获得配置内容的方式也不一样。

[table] 
配置节处理程序|返回类型[br] 
[/table] 
SingleTagSectionHandler Systems.Collections.IDictionary

DictionarySectionHandler Systems.Collections.IDictionary

NameValueSectionHandler Systems.Collections.Specialized.NameValueCollection

3.2 自定义配置节组 
配置节组是使用<sectionGroup>元素,将类似的配置节分到同一个组中。配置节组声明部分将创建配置节的包含元素,在< configSections>元素中声明配置节组,并将属于该组的节置于<sectionGroup>元素中。下面是一个包含配置节组的配置文件的例子:

复制代码 代码如下:

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
<configSections> 
<sectionGroup name="TestGroup"> 
<section name="Test" type="System.Configuration.NameValueSectionHandler"/> 
</sectionGroup> 
</configSections>

<TestGroup> 
<Test> 
<add key="Hello" value="World"/> 
</Test> 
</TestGroup> 
</configuration>

$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

/// <summary>
/// Read confing
/// </summary>
/// <param name="path"></param>
/// <param name="appKey"></param>
/// <returns></returns>
public string GetConfigValue(string path,string appKey)  
{     
  XmlDocument xDoc = new XmlDocument();     
  try
  {
     xDoc.Load(path);     
    //xDoc.Load(System.Windows.Forms.Application.ExecutablePath+".config");
    XmlNode xNode;     
    XmlElement xElem;     
    xNode = xDoc.SelectSingleNode("//appSettings");    
    xElem = (XmlElement)xNode.SelectSingleNode("//add[@key='"+appKey+"']");     
    if(xElem!=null)   
     return xElem.GetAttribute("value");     
    else     
     return   "";
   }
 catch(Exception)
{
     return "";
   }
}

C# App.config文件的使用的更多相关文章

  1. Visual Studio 2013 Unit Test Project App.config文件设置方法

    开放中经常会要做单元测试,新的项目又没有单元测试项目,怎么才能搭建一个单元测试项目呢? 下面跟我四步走,如有错误之处,还请指正! 1.添加项目 2.添加配置文件 新建app.config文件,注意不是 ...

  2. C#项目实例中读取并修改App.config文件

    C#项目是指一系列独特的.复杂的并相互关联的活动,这些活动有着一个明确的目标或目的,必须在特定的时间.预算.资源限定内,依据规范完成.项目参数包括项目范围.质量.成本.时间.资源. 1. 向C#项目实 ...

  3. 修改和获取web.config或app.config文件appSettings配置节中的Add里的value属性 函数

    1: /// <summary> 2: /// 修改web.config或app.config文件appSettings配置节中的Add里的value属性 3: /// </summ ...

  4. WPF程序中App.Config文件的读与写

    WPF程序中的App.Config文件是我们应用程序中经常使用的一种配置文件,System.Configuration.dll文件中提供了大量的读写的配置,所以它是一种高效的程序配置方式,那么今天我就 ...

  5. C#项目中关于多个程序集下App.config文件的问题

    在项目中我们会经常用到App.config文件,有的是自动生成的,比如引用webservice.wcf服务时生成:也有手动建立的配置文件直接默认名就为app.config.这些配置有的保存当前程序集用 ...

  6. 第19课-数据库开发及ado.net ADO.NET--SQLDataReader使用.SqlProFiler演示.ADoNET连接池,参数化查询.SQLHelper .通过App.Config文件获得连接字符串

    第19课-数据库开发及ado.net ADO.NET--SQLDataReader使用.SqlProFiler演示.ADoNET连接池,参数化查询.SQLHelper .通过App.Config文件获 ...

  7. 如何使用App.config文件,读取字符串?

    如何使用App.config文件,读取字符串? .在项目里添加App.config文件,内容如下: <?xml version="1.0" encoding="ut ...

  8. C#简单操作app.config文件

    即将操作的app.config文件内容如下 <?xml version="1.0" encoding="utf-8"?> <configura ...

  9. c#Winform程序调用app.config文件配置数据库连接字符串 SQL Server文章目录 浅谈SQL Server中统计对于查询的影响 有关索引的DMV SQL Server中的执行引擎入门 【译】表变量和临时表的比较 对于表列数据类型选择的一点思考 SQL Server复制入门(一)----复制简介 操作系统中的进程与线程

    c#Winform程序调用app.config文件配置数据库连接字符串 你新建winform项目的时候,会有一个app.config的配置文件,写在里面的<connectionStrings n ...

随机推荐

  1. powerScript脚本

    一.powerScript的语法 1.0变量的命名及使用 powerscript的标识符(变量名称)必须以字母或下划线开头,其它的字符可以是下划线(_).短横线(-).美元符号($).号码符号(#) ...

  2. 【 D3.js 高级系列 — 10.0 】 思维导图

    思维导图的节点具有层级关系和隶属关系,很像枝叶从树干伸展开来的形状.在前面讲解布局的时候,提到有五个布局是由层级布局扩展来的,其中的树状图(tree layout)和集群图(cluster layou ...

  3. Java [Leetcode 229]Bulls and Cows

    题目描述: You are playing the following Bulls and Cows game with your friend: You write down a number an ...

  4. zoj 1842 Prime Distance

    // 数论题,增强的筛法,回想素数筛法 // 只要筛到最大数的开方,剩下的就是素数 // 于是这里,开一个 sqrt(2^31) 大约 65536 的素数表,然后 // 对于每个 L~U 的区间,筛掉 ...

  5. [转]python类方法

    Python定义类-方法 公有方法.私有方法.类方法.静态方法

  6. windows主线程等待子线程退出卡死问题

    在windows下调用_beginthread创建子线程并获得子线程id(函数返回值),如果子线程很快退出,在主线程中调用WaitForSingleObject等待该线程id退出,会导致主线程卡死.需 ...

  7. Kafka 设计与原理详解

    一.Kafka简介 本文综合了我之前写的kafka相关文章,可作为一个全面了解学习kafka的培训学习资料. 转载请注明出处 : 本文链接 1.1 背景历史 当今社会各种应用系统诸如商业.社交.搜索. ...

  8. POJ 2096-Collecting Bugs(概率dp入门)

    题意: 有n种bug和s种系统bug,每天发现一种bug(可能已经发现过了)所有种bug被发现的概率相同,求所有bug被发现的期望天数. 分析: dp[i][j]发现i种bug,j种系统bug期望天数 ...

  9. 《Python CookBook2》 第一章 文本 - 改变多行文本字符串的缩进 && 扩展和压缩制表符(此节内容待定)

    改变多行文本字符串的缩进 任务: 有个包含多行文本的字符串,需要创建该字符串的一个拷贝.并在每行行首添加或者删除一些空格,以保证每行的缩进都是指定数目的空格数. 解决方案: # -*- coding: ...

  10. C#几种截取字符串的方法小结

    1.根据单个分隔字符用split截取例如代码如下: string st="GT123_1"; string[] sArray=st.split("_"); 即可 ...