使用 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 应用程序配置文件中检索信息。

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

  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 ConfigurationManager 类的属性的方法AppSettingsConfigurationManager 类位于 System.Configuration 命名空间中。 AppSettings.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. 引用 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 是必需的后缀。

参考