使用 Visual C# 存储和检索应用程序配置文件中的自定义信息

本文介绍如何存储配置文件中的自定义信息,稍后可以通过其关联的应用程序在运行时检索该文件。 当必须定义与应用程序关联的数据时,这非常有用。

原始产品版本: Visual C#
原始 KB 编号: 815786

要求

以下列表概述了所需的建议硬件和软件:

  • Microsoft Windows
  • Visual C#

本文假设你熟悉以下主题:

  • 可扩展标记语言 (XML)
  • .NET 配置文件

创建可读取配置文件的控制台应用程序

可以将应用程序设置存储在与应用程序关联的配置文件中。 配置文件以 XML 格式保存。

System.Configuration.NET Framework 中的 和 System.Collections.Specialized 命名空间包括必要的类,用于在运行时从 .NET 应用程序配置文件中检索信息。

若要创建在运行时读取关联配置文件内容的控制台应用程序,请执行以下步骤:

  1. 启动 Visual Studio .NET 或 Visual Studio。

  2. 在“文件”菜单上,指向“新建”,然后选择“项目”

  3. 选择“项目类型”下的“Visual C#”,然后选择“模板”下的“控制台应用程序”。 将项目命名为 ConConfig。 默认情况下,Visual C# 创建名为 Program 的类。

    注意

    在 Visual Studio .NET 中,选择“项目类型”下的“Visual C# 项目”,然后选择“模板”下的“控制台应用程序”。 将项目命名为 ConConfig。 默认情况下,Visual C# 创建名为 Class1 的类

  4. 确保解决方案资源管理器窗口可见。 如果它不可见,请按 Ctrl+ALT+L 组合键。

  5. 解决方案资源管理器中,右键单击项目名称,选择“添加”,然后选择“新建项”。

  6. “添加新项” 列表中,选择“ XML 文件”。

  7. “名称 ”文本框中,键入 App.config,然后选择“ 添加”。

  8. 可以使用应用程序配置文件收集以键/值格式保存的自定义应用程序设置。 可以在 <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>
    
  9. 解决方案资源管理器中,双击“Program.cs”以显示代码窗口。 将以下语句添加到代码模块。

    注意

    这些语句必须出现在文件中的任何其他语句之前。

    using System.Configuration;
    using System.Collections.Specialized;
    
  10. 按照以下步骤添加对 System.Configuration.dll 的引用:

    1. 在“ 项目 ”菜单上,选择“ 添加引用”。
    2. 在“ 添加引用 ”对话框中,选择“ .NET ”选项卡。
    3. 查找并选择 的 System.Configuration“组件名称”。
    4. 选择“确定”。
  11. 若要在配置文件的 节中 <appSettings> 保留配置文件键的值,请在 节中 Main 声明一个字符串变量,如下所示:

    string sAttr;
    
  12. 若要从 <appSettings> 配置文件的 节检索指定键的值,请使用 Get 类的 AppSettings 属性的 ConfigurationManager 方法。 类 ConfigurationManager 位于 命名空间中 System.ConfigurationAppSettings.Get当 方法收到包含键的字符串输入参数时,应用程序将检索与键关联的值。

    以下代码从关联的配置文件中检索 属性的值 Key0 。 然后,代码将此值置于字符串变量中 sAttr 。 如果此值不存在键,则 不会在 中 sAttr存储任何内容。

    sAttr = ConfigurationManager.AppSettings.Get("Key0");
    
  13. 若要在控制台窗口中显示应用程序检索的值,请使用 Console.WriteLine ,如下所示:

    Console.WriteLine("The value of Key0 is "+sAttr);
    
  14. 可以使用对 属性的 AppSettings 一个引用来检索 节中的所有 <appSettings> 键/值对。 使用 AppSettings 属性时,应用程序将返回所有关联的键/值对。 这些对存储在类型 NameValueCollection 中。 包含 NameValueCollection 应用程序检索的每个键的键/值条目。 类 NameValueCollection 位于 命名空间中 System.Collections.Specialized

    NameValueCollection sAll ;
    sAll = ConfigurationManager.AppSettings;
    
  15. AllKeysNameValueCollection 属性引用一个字符串数组,该数组具有应用程序检索的每个键的条目。 使用 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();
        }
    }
}

注意

此代码面向 .NET Framework 2.0。 如果使用 .NET Framework 1.0 或 .NET Framework 1.1,请将 类的所有实例ConfigurationManager更改为 ConfigurationSettings

完整的配置文件列表 (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 的元素的 key 属性 <add> ,或者如果 <appSettings> 节显示为 <AppSettings> 大写 A 而不是小写) 的 (,则会收到错误消息。

  • 配置文件必须与其关联的应用程序保存在同一文件夹中。

  • 必须对配置文件名称使用以下语法:
    <ApplicationName>。<ApplicationType>.config

    其中 <ApplicationName> 是应用程序的名称。 <ApplicationType> 是应用程序的类型,例如 .exe。 和 .config 是所需的后缀。

References