使用 Visual C# 存储和检索应用程序配置文件中的自定义信息
本文介绍如何从配置文件中存储自定义信息,以便稍后可以在运行时由其关联的应用程序检索这些信息。 必须定义与应用程序关联的数据时,这非常有用。
注意
本文中的代码面向 .NET Framework 2.0 及更高版本。 若要了解类适用的特定版本 ConfigurationManager
,请参阅“ 应用于 ”部分。
原始产品版本: Visual C#
原始 KB 数: 815786
要求
以下列表概述了所需的推荐硬件和软件:
- Microsoft Windows
- Visual C#
本文假定你熟悉以下主题:
- Extensible Markup Language (XML) — 可扩展标记语言 (XML)
- .NET 配置文件
创建读取配置文件的控制台应用程序
可以将应用程序设置存储在与应用程序关联的配置文件中。 配置文件以 XML 格式保存。
System.Configuration
System.Collections.Specialized
.NET Framework 中的命名空间包括必要的类,用于在运行时从 .NET 应用程序配置文件中检索信息。
若要创建在运行时读取关联配置文件内容的控制台应用程序,请执行以下步骤:
启动 Visual Studio .NET 或 Visual Studio。
在 “文件” 菜单上,指向 “新建”,然后选择 “项目”。
在“项目类型”下选择“Visual C#”,然后在“模板”下选择“控制台应用程序”。 将项目 命名为 ConConfig。 默认情况下,Visual C# 将创建名为 Program 的类。
注意
在 Visual Studio .NET 中,选择“项目类型”下的“Visual C# 项目”,然后在“模板”下选择“控制台应用程序”。 将项目 命名为 ConConfig。 默认情况下,Visual C# 创建名为 Class1 的类。
确保解决方案资源管理器窗口可见。 如果它不可见,请按 Ctrl+Alt+L 组合键。
在解决方案资源管理器中,右键单击项目名称,选择“添加”,然后选择“新建项”。
在 “添加新项 ”列表中,选择“ XML 文件”。
在 “名称 ”文本框中,键入 App.config,然后选择“ 添加”。
可以使用应用程序配置文件收集以键/值格式保存的自定义应用程序设置。 可以在
<add>
关联的配置文件的节中包含<appSettings>
元素。 每个键/值对都有一个<add>
元素。 元素<add>
具有以下格式:<add key="Key0" value="0" />
<appSettings>
将包含<add>
元素的节添加到配置文件中的<configuration>
标记和</configuration>
标记。例如,以下配置文件包括一个指定三个
<appSettings>
键/值对的节:<?xml version="1.0" encoding="utf-8" ?> <configuration> <appSettings> <add key="Key0" value="0" /> <add key="Key1" value="1" /> <add key="Key2" value="2" /> </appSettings> </configuration>
在解决方案资源管理器中,双击Program.cs以显示代码窗口。 将以下语句添加到代码模块。
注意
这些语句必须出现在文件中的任何其他语句之前。
using System.Configuration; using System.Collections.Specialized;
按照以下步骤添加对 System.Configuration.dll 的引用:
- 在“项目”菜单中,选择“添加引用”。
- 在 “添加引用 ”对话框中,选择 “.NET ”选项卡。
- 查找并选择其组件
System.Configuration
名称。 - 选择“确定”。
若要在配置文件的节中
<appSettings>
保存配置文件键中的值,请在节中Main
声明字符串变量,如下所示:string sAttr;
若要从
<appSettings>
配置文件部分检索指定键的值,请使用Get
ConfigurationManager 类的属性的方法AppSettings
。ConfigurationManager
类位于System.Configuration
命名空间中。AppSettings.Get
当方法收到包含键的字符串输入参数时,应用程序将检索与键关联的值。以下代码从关联的配置文件中检索属性的值
Key0
。 然后,代码将此值放在字符串变量中sAttr
。 如果此值不存在键,则不会存储任何sAttr
内容。sAttr = ConfigurationManager.AppSettings.Get("Key0");
若要显示应用程序在控制台窗口中检索的值,请使用
Console.WriteLine
如下所示:Console.WriteLine("The value of Key0 is "+sAttr);
可以使用对属性的
AppSettings
一个引用来检索节<appSettings>
中的所有键/值对。 使用属性AppSettings
时,应用程序将返回所有关联的键/值对。 这些对存储在类型NameValueCollection
中。 包含NameValueCollection
应用程序检索的每个键的键/值条目。NameValueCollection
类位于System.Collections.Specialized
命名空间中。NameValueCollection sAll ; sAll = ConfigurationManager.AppSettings;
引用
AllKeys
字符串数组的属性NameValueCollection
,该数组具有应用程序检索的每个键的条目。 使用 foreach 构造循环访问AllKeys
应用程序检索的每个键。 每个键项AllKeys
都是字符串数据类型。在构造中
foreach
,用于Console.WriteLine
在控制台窗口中显示键及其关联值。 应用程序进程的当前键。s
将其用作索引sAllNameValueCollection
以获取其关联值。foreach (string s in sAll.AllKeys) Console.WriteLine("Key: "+ s + " Value: " + sAll.Get(s)); Console.ReadLine();
完整代码清单
using System;
using System.Configuration;
using System.Collections.Specialized;
namespace ConConfig
{
class Program
{
static void Main(string[] args)
{
string sAttr;
// Read a particular key from the config file
sAttr = ConfigurationManager.AppSettings.Get("Key0");
Console.WriteLine("The value of Key0: " + sAttr);
// Read all the keys from the config file
NameValueCollection sAll;
sAll = ConfigurationManager.AppSettings;
foreach (string s in sAll.AllKeys)
Console.WriteLine("Key: " + s + " Value: " + sAll.Get(s));
Console.ReadLine();
}
}
}
完整配置文件列表(ConConfig.exe.config)
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="Key0" value="0" />
<add key="Key1" value="1" />
<add key="Key2" value="2" />
</appSettings>
</configuration>
验证它是否正常工作
按 F5 运行代码。 控制台窗口应显示关联配置文件部分中的键/值对 <appSettings>
,如下所示:
The value of Key0: 0
Key: Key0 Value:0
Key: Key1 Value:1
Key: Key2 Value:2
疑难解答
配置文件以 XML 格式保存。 请确保遵循所有 XML 语法规则。 请记住,XML 区分大小写。 如果 XML 格式不正确,或者元素拼写错误,则会收到异常
System.Configuration.Configuration
。例如,如果添加具有大写 K 而不是小写 k 的元素的
<add>
键属性,或者<appSettings>
如果节显示为<AppSettings>
(使用大写 A 而不是小写 a),则会收到错误消息。配置文件必须与其关联的应用程序保存在同一文件夹中。
必须为配置文件名称使用以下语法:
<ApplicationName>。<ApplicationType.config>其中 <ApplicationName> 是应用程序的名称。 <ApplicationType> 是应用程序的类型,例如
.exe
。 并且.config
是必需的后缀。