65.9K
CodeProject 正在变化。 阅读更多。
Home

用于提供应用程序配置数据的配置文件

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.07/5 (77投票s)

2004 年 3 月 27 日

4分钟阅读

viewsIcon

526054

本文将讨论 .NET 中的“应用程序配置”文件,并提供从配置文件读取的示例代码。

引言

.NET 提供了一种简单的方式来在应用程序配置文件中存储配置信息。在简单的实现中,您可以将信息存储为键值对。

例如,假设您的应用程序需要使用数据源。如果您将数据源信息硬编码到代码中,那么当您需要更改此数据源时,将会非常麻烦。您需要更改源代码并重新编译。每次将产品提供给不同的客户或在不同的计算机上运行应用程序时,这都将不起作用!

在早期,程序员习惯将此信息存储在称为 .ini 文件或系统注册表的文件中。应用程序可以从 .ini 文件或注册表中读取信息,而无需在 .ini 文件或注册表中的值更改时重新编译代码。

但大多数时候这都很麻烦。打开注册表,找到条目并进行适当的更改,这并不有趣。您很有可能弄乱注册表中一些重要的条目,导致您的系统无法运行。事实上,在安全系统中,管理员可能会拒绝访问注册表,用户根本无法编辑注册表。

.NET 为您提供了一个简单易用的解决方案——应用程序配置文件。每个应用程序都可以有一个配置文件,该文件实际上是一个 XML 文件。您可以使用任何文本编辑器(包括记事本)打开配置文件并更改值。应用程序将从该配置文件加载值,而无需在每次更改数据源或配置文件中存储的任何其他信息时更改源代码。

Windows 应用程序的 app.config

VS.NET 中的 Windows 应用程序默认使用 app.config 作为配置文件的名称。创建 Windows 应用程序时,不会自动创建此文件。如果您的应用程序需要配置文件,请在 VS.NET 中打开项目,转到“解决方案资源管理器”,然后右键单击项目名称。从菜单中选择“添加”>“添加新项”,然后从选项列表中选择“应用程序配置文件”。这将为您在应用程序根目录中创建一个 app.config 文件。

默认情况下,app.config 文件将包含以下内容

<?xml version="1.0" encoding="utf-8" ?> 

<configuration> 

</configuration>

要将值存储在配置文件中,您可以创建以下格式的 XML 元素

<add key="MyKey" value="MyValue" />

请参阅下面的示例配置条目

<?xml version="1.0" encoding=    "utf-8" ?>

<configuration>

<appSettings>

    <add key="DatabasePath" value="c:\\projects\data\spider.mdb" />

    <add key="SupportEmail" value="webmaster-1@dotnetspider.com" />

</appSettings>

</configuration>

要从此配置文件读取,只需在应用程序中使用以下代码

string dbPath = 
  System.Configuration.ConfigurationSettings.AppSettings["DatabasePath"];
string email = 
  System.Configuration.ConfigurationSettings.AppSettings["SupportEmail"];

ConfigurationSettings 是用于访问配置文件内容的类。由于此类是 System.Configuration 命名空间的一部分,因此我们必须使用完全限定名 System.Configuration.ConfigurationSettings。作为一种快捷方式,您可以在文件顶部使用 using 指令,如下所示

using System.Configuration;

如果您在文件顶部有上述指令,那么您可以直接使用 ConfigurationSettings 类。

string dbPath = ConfigurationSettings.AppSettings["DatabasePath"];
string email = ConfigurationSettings.AppSettings["SupportEmail"];

在 VB.NET 中,您必须使用“( ... )”而不是“[ ... ]”,如下所示

Dim dbPath as String = ConfigurationSettings.AppSettings("DatabasePath")
Dim email as String = ConfigurationSettings.AppSettings("SupportEmail")

注意:编译应用程序时,VS.NET 会在您的 bin\debug 文件夹中自动创建一个名为 <your application name>.exe.config 的文件。编译应用程序时,app.config 的内容会自动复制到这个新的配置文件中。当您将应用程序交付给最终用户时,您必须交付可执行文件和这个名为 <your application name>.exe.config 的新配置文件,而不是 app.config。用户可以修改 <your application name>.exe.config 文件中的数据,应用程序在重新启动时会从该配置文件读取数据。

Web 应用程序的 web.config

Web 应用程序使用相同的概念,但它们使用名为 web.config 的配置文件。在这种情况下有几点需要注意。

  • 创建任何 Web 项目时,VS.NET 会自动创建 web.config
  • 编译 Web 应用程序时,web.config 不会被重命名或复制到 BIN 文件夹。
  • web.config 包含许多默认条目,以支持 Web/IIS 配置和安全。
  • 您可以在 web.config 中添加 <appSettings> 部分,并在该部分中添加您的键/值对。
  • 除了根目录中的 web.config 文件外,您还可以为 Web 应用程序中的每个目录拥有单独的 web.config 文件。对于每个网页,默认情况下,系统会在与该页面相同的文件夹中查找 web.config,如果找不到,则会在父文件夹中查找。
© . All rights reserved.