管理应用程序设置 (.NET)

应用程序设置使你可以动态存储应用程序信息。 使用应用程序设置,可以使用客户端计算机来存储不应在运行时包含在应用程序代码中的信息。 应用程序设置可以包括连接字符串、用户首选项等。

备注

应用程序设置替换 Visual Studio 早期版本中使用的动态属性。

每个应用程序设置必须具有唯一的名称。 名称可以是字母、数字或下划线的任意组合。 名称不能以数字开头,并且不能有空格。 可通过 Name 属性来更改名称。

应用程序设置可以存储为可序列化成 XML 或包含用于实现 /ToStringFromStringTypeConverter 的任何数据类型。 最常见的类型是 StringIntegerBoolean。 还可以将值存储为 ColorObject或连接字符串。

应用程序设置也包含一个值。 该值使用 Value 属性进行设置,并且必须与设置的数据类型匹配。

此外,应用程序设置还可以在设计时绑定到窗体或控件的属性。

有两种类型的应用程序设置,具体取决于范围:

  • 应用程序范围的设置 可用于 Web 服务或数据库连接字符串的 URL 等信息。 这些值与应用程序相关联。 因此,用户无法在运行时更改它们。

  • 用户范围的设置可以用于诸如保持窗体的最后位置或字体首选项这类的信息。 用户可以在运行时更改这些值。

可以使用 Scope 属性更改设置的类型。

项目系统将应用程序设置存储在两个 XML 文件中:

  • 在设计时创建的 app.config 文件是在第一次创建应用程序设置时生成的。

  • 运行应用程序的用户更改任何用户设置的值时,会在运行时创建 user.config 文件

除非应用程序专门调用方法来执行此操作,否则用户设置中的更改不会写入磁盘。

在设计时创建应用程序设置

在设计时,可以通过两种方式创建应用程序设置:

  • 使用“项目设计器”的“设置”页

  • 使用窗体或控件的“属性”窗口,这样就可以将设置绑定到属性

创建应用程序范围的设置(例如,数据库连接字符串或对服务器资源的引用)时,Visual Studio 会将其保存在具有 <applicationSettings> 标记的 app.config 文件中。 连接字符串保存在 <connectionStrings> 标记下。

创建用户范围设置(例如默认字体、主页或窗口大小)时,Visual Studio 会将其保存在具有 <userSettings> 标记的 app.config 文件中。

重要

app.config中存储连接字符串时,应采取预防措施,避免在连接字符串中显示敏感信息,例如密码或服务器路径。

如果从外部源(例如提供其用户 ID 和密码的用户)获取连接字符串信息,请确保用于构造连接字符串的值不包含更改连接行为的附加连接字符串参数。

请考虑使用受保护的配置功能加密配置文件中的敏感信息。 有关详细信息,请参阅 保护连接信息

备注

由于类库没有配置文件模型,因此应用程序设置不适用于类库项目。 例外情况是 Visual Studio Tools for Office Runtime DLL 项目,该项目可以具有配置文件。

使用自定义设置文件

你可以向项目添加自定义设置文件,以便方便地管理设置组。 单个文件中包含的设置将加载并另存为单元。 通过将设置存储在分别用于频繁使用和不常使用组的单独文件中,可以节省加载和保存设置的时间。

例如,可以将 SpecialSettings.settings 文件添加到项目中。 虽然 SpecialSettings 类未在 My 命名空间中公开,但 查看代码 可以读取包含 Partial Class SpecialSettings的自定义设置文件。

设置设计器 首先搜索项目系统创建的 Settings.settings 文件。 此 Settings.settings 文件是 项目设计器 显示在 设置 选项卡中的默认文件。Settings.settings 文件位于 Visual Basic 项目的 “我的项目” 文件夹中,以及 Visual C# 项目的 属性 文件夹中。 项目设计器 然后搜索项目根文件夹中的其他设置文件。 因此,应将自定义设置文件放在其中。 如果在项目中的其他地方添加 .settings 文件,则 项目设计器 找不到它。

在 Visual Basic 中访问或更改运行时的应用程序设置

在 Visual Basic 项目中,可以使用 My.Settings 对象在运行时访问应用程序设置。 在 设置 页上,选择“查看代码”按钮以查看 Settings.vb 文件。 Settings.vb 定义 Settings 类,使你能够在设置类上处理这些事件:

Settings.vb 中的 Settings 类是一个分部类,仅显示用户拥有的代码,而不是整个生成的类。 有关使用 My.Settings 对象访问应用程序设置的详细信息,请参阅 Access 应用程序设置(.NET Framework)

用户在运行时更改的任何用户范围设置的值(例如窗体的位置)存储在 user.config 文件中。 默认值仍保存在 app.config中。

如果在运行时更改了任何用户范围的设置,例如在测试应用程序时,并且想要将这些设置重置为其默认值,请选择 同步 按钮。

建议使用 My.Settings 对象和默认 .settings 文件访问设置。 可以使用 设置设计器 将属性分配给设置,此外,用户设置也会在应用程序关闭之前自动保存。 但是,Visual Basic 应用程序可以直接访问设置。 在这种情况下,你必须访问 MySettings 类,并在项目的根目录中使用自定义 .settings 文件。 在结束应用程序之前,必须保存用户设置,就像对 C# 应用程序所做的那样,如以下部分所述。

在 C 的运行时访问或更改应用程序设置#

在 Visual Basic 以外的语言(如 C#)中,必须直接访问 Settings 类,如以下 Visual C# 示例所示。

Properties.Settings.Default.FirstUserSetting = "abc";

必须显式调用此包装类的 Save 方法才能保留用户设置。 通常,在主窗体的 Closing 事件处理程序中执行此操作。 以下 C# 示例显示了对 Save 方法的调用。

Properties.Settings.Default.Save();

有关通过 Settings 类访问应用程序设置的一般信息,请参阅 应用程序设置概述(.NET Framework)

将应用从 .NET Framework 迁移到 .NET

.NET Framework 使用 app.config 文件加载应用的设置,例如连接字符串和日志提供程序配置。 新式 .NET 将 appsettings.json 文件用于应用设置。 若要详细了解如何将 app.config 文件转换为 appsettings.json,请参阅从 .NET Framework 升级到 .NET 后现代化。