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

文章翻译 文章翻译
文章编号: 815786 - 查看本文应用于的产品
为这篇文章的一个 Microsoft Visual Basic.net 版本,请参阅 313405
这篇文章是指到下面的 Microsoft.net 框架类库命名空间:
  • System.Configuration
展开全部 | 关闭全部

本文内容

概要

本文介绍如何将自定义信息存储在您可以以后在运行时检索其相关联的应用程序的配置 (.config) 文件。您必须定义与应用程序相关联的数据时,这是很有帮助。

要求

下面的列表概述了建议的硬件、 软件、 网络的基础结构和服务包,您需要:
  • Microsoft Windows 2000、 Windows XP、 Windows Server 2003、 Windows Vista 或 Windows Server 2008
  • Microsoft Visual C#
本文假定您熟悉下列主题:
  • 可扩展标记语言 (XML)
  • .NET 配置文件

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

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

System.Configuration 和 Microsoft.net 框架中的 System.Collections.Specialized 命名空间包括从.net 应用程序配置文件中检索信息,在运行时所需的类。

若要进行一个控制台应用程序,它在运行时读取一个关联的配置文件的内容,请按照下列步骤操作:
  1. 启动 Visual Studio.net 或 Visual Studio 2005。
  2. 文件 菜单上指向 新建,然后单击 项目
  3. 项目类型 框中,单击 Visual C#,然后单击 模板 下的 控制台应用程序。命名该项目 ConConfig。默认状态下,Visual C# 创建一个名为程序的类。

    注意在 Visual Studio.net 2003 年在 项目类型 框中,单击 Visual C# 项目,然后单击 模板 下的 控制台应用程序。命名该项目 ConConfig。默认状态下,Visual C# 创建一个名为 Class1 的类。
  4. 请确保解决方案资源管理器窗口是可见。如果它是不可见的请按 CTRL + ALT + L 组合键。
  5. 在解决方案资源管理器中,右击项目名称,单击 添加,然后单击 新建项目
  6. 添加新项 列表中单击以选择 XML 文件
  7. 名称 文本框中键入 App.config,然后单击 添加

    注意在 Visual Studio.net 2003 年单击 打开
  8. 您可以使用应用程序配置文件来收集将保存为键/值格式的自定义应用程序设置。您可以包括 <add><appsettings>中的元素 一个关联的配置文件的部分。每个键/值对都有一个 <add> 元素。一个 <add> 元素具有以下格式:
    <add key="Key0" value="0" />
    添加一个 <appsettings><add>节 到配置文件在 <configuration>之间的元素 and </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>检索指定的项的值 部分中配置文件的使用 AppSettingsConfigurationManager 类的属性的 Get 方法。ConfigurationManager 类是 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 类处于
    NameValueCollection sAll ;
    sAll = ConfigurationManager.AppSettings;
    System.Collections.Specialized 命名空间。
  15. NameValueCollectionAllKeys 属性引用一个字符串数组,包含应用程序检索每个键的项。使用 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,改 ConfigurationSettingsConfigurationManager 类的所有实例。

完成列表 (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 异常。

    例如您添加的一个 <add>键属性 具有一个大写"K"的大小写"k,而不是元素或如果该 <appsettings> 部分将显示为 <appsettings> (而不是一个小写的一个大写字母"A"与"a"),您收到一条错误消息。
  • 配置文件必须保存在其相关联的应用程序所在的文件夹中。
  • 输入配置文件的名称,您必须使用以下语法:
    ApplicationNameApplicationType.config
    其中 ApplicationNameApplicationType 应用程序的名称是应用程序 (例如对于.exe) 的类型和.config 是必需的后缀。

参考

有关详细的信息,请参阅下面的 Microsoft 开发人员网络 (MSDN) 的 Web 站点:
ConfigurationSettings.AppSettings 属性
http://msdn.microsoft.com/en-us/library/system.configuration.configurationsettings.appsettings(vs.71).aspx
System.Configuration 命名空间
http://msdn.microsoft.com/en-us/library/system.configuration(vs.71).aspx

属性

文章编号: 815786 - 最后修改: 2008年7月16日 - 修订: 3.1
这篇文章中的信息适用于:
  • Microsoft Visual C# 2008 Express Edition
  • Microsoft Visual C# 2005 Express Edition
  • Microsoft Visual C# .NET 2003 标准版
  • Microsoft Visual C# .NET 2002 标准版
关键字:?
kbmt kbsweptvs2008 kbcollections kbcollectionclass kbconfig kbnamespace kbhowtomaster kbprogramming KB815786 KbMtzh
机器翻译
注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。
点击这里察看该文章的英文版: 815786
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。

提供反馈

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com