应用程序要在一台计算机上运行,可能需要进行一些配置。
CLR
的配置文件是
XML
文件。应用程序可以在不进行重新编译的情况下使用配置文件。这些配置文件是用
XML
编写的,元素本身的自描述性优于传统的基于文本的配置文件。
.NET
支持多种配置文件:机器级别、应用程序级别、直接与安全性相关等。其中最常用的就是应用程序级别的配置文件。这篇文章简要叙述应用程序配置文件的使用方法。
应用程序配置文件的文件名是可知性文件的文件名加
.config
。如果应用程序名为
App.exe
,那么其配置文件应该为
App.exe.config
文件。应该放在
/bin
文件夹下。
在应用程序配置文件里面最有用处的,也是最常用的部分其实是自定义配置部分。配置文件架构允许在配置文件中存在用户自定义的段落,可以在这些自定义的段落中安排配置数据。
.NET
框架类库提供一个供应用程序使用的通用配置处理器,包括两个类:
System.Consiguration.SingleTagSectionHandler
和
System.Configuration.NameValueSectionHandler
。
用一个实例来说明问题是最好的办法。首先,建立一个控制台项目名为
ReadCustomData
。
然后,在解决方案管理器里,右击项目,添加,添加新项,选择应用程序配置文件。命名为:
ReadCustomData.exe.config
。文件内容如下:
<?
xml
version
="1.0"
encoding
="utf-8"
?>
<
configuration
>
<configSections>
<sectionname="customSection"
type
="System.Configuration.SingleTagSectionHandler"
/>
</configSections>
<customSectionsetting1="one"
setting2
="two"
setting3
="three"
/>
</
configuration
>
然后再
Main
函数里写下如下程序:
static
void
Main
(string[] args)
{
//
// TODO: 在此处添加代码以启动应用程序
//
//从配置文件或的数据
IDictionary sampleTable = (IDictionary)
ConfigurationSettings.GetConfig("customSection");
Console.WriteLine(sampleTable["setting1"].ToString());
Console.WriteLine(sampleTable["setting2"].ToString());
Console.WriteLine(sampleTable["setting3"].ToString());
Console.ReadLine();
}
执行结果:
one
two
three
注意:一定要把配置文件放置在/bin/debug目录下。
还有另外一个选项解析类System.Configuration.NameValueSectionHandler。要在配置文件里使用这个,配置文件和程序就应当这样写:
<?
xml
version
="1.0"
encoding
="utf-8"
?>
<
configuration
>
<configSections>
<sectionname="customNamedSection"
type
="System.Configuration.NameValueSectionHandler"
/>
</configSections>
<customNamedSection>
<addkey="setting1"value="one"/>
<addkey="setting2"value="two"/>
<addkey="setting3"value="three"/>
</customNamedSection>
</
configuration
>
程序:
static
void
Main
(string[] args)
{
//
// TODO: 在此处添加代码以启动应用程序
//
//从配置文件得到数据
NameValueCollection sampleTable = (NameValueCollection)
ConfigurationSettings.GetConfig("customNamedSection");
Console.WriteLine(sampleTable["setting1"]);
Console.WriteLine(sampleTable["setting2"]);
Console.WriteLine(sampleTable["setting3"]);
Console.ReadLine();
}