应用程序设置架构

应用程序设置允许 Windows 窗体或 ASP.NET 应用程序存储和检索应用程序范围和用户范围的设置。 在此上下文中,设置是可能特定于应用程序或特定于当前用户的任何信息 - 从数据库连接字符串到用户首选默认窗口大小的任何信息。

默认情况下,Windows 窗体应用程序中的应用程序设置使用 LocalFileSettingsProvider 类,该类使用 .NET 配置系统将设置存储在 XML 配置文件中。 有关应用程序设置使用的文件的详细信息,请参阅应用程序设置体系结构

重要

.NET Framework 定义的大多数配置节在 .NET 6+ 和 .NET Core 版本中不再正常运行。 ConfigurationManager 仅用于实现兼容性。 新式 .NET 使用 appsettings.json 而不是 app.config 文件进行应用设置。 请参阅从 .NET Framework 升级到 .NET 后进行现代化

请考虑删除 app.config 中的使用,并调用相应的 API(如果可用),以便进行相同的设置。 有关详细信息,请参阅 .NET 中的配置

应用程序设置将以下元素定义为它使用的配置文件的一部分。

元素 说明
<applicationSettings> 包含特定于应用程序的所有 <setting> 标记。
<userSettings> 包含特定于当前用户的所有 <setting> 标记。
<setting> 定义设置。 <applicationSettings> 或 <userSettings> 的子级。
<value> 定义设置的值。 <setting> 的子级。

<applicationSettings> 元素

此元素包含特定于客户端计算机上的应用程序实例的所有 <setting> 标记。 未定义任何属性。

<userSettings> 元素

此元素包含特定于当前使用应用程序的用户的所有 <setting> 标记。 未定义任何属性。

<setting> 元素

此元素定义设置。 它具有以下属性。

属性 描述
name 必需。 设置的唯一 ID。 通过 Visual Studio 创建的设置以 ProjectName.Properties.Settings 名称保存。
serializeAs 必需。 用于将值序列化为文本的格式。 有效值是:

- string。 使用 TypeConverter 将值序列化为字符串。
- xml。 使用 XML 序列化将值序列化。
- binary。 使用二进制序列化将该值序列化为文本编码的二进制文件。
- custom。 设置提供程序具有此设置的固有知识,并对其进行序列化和反序列化。

添加在 <applicationSettings> 中创建的设置的名称,作为文件顶部的 <configSections> 元素下的条目。 例如:

<configuration>
    <configSections>
        <sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
            <section name="WindowsFormsApp1.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
            <section name="WindowsFormsApp1.Properties.MyCustomSettings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
        </sectionGroup>
    </configSections>
    ...
</configuration>

<value> 元素

此元素包含设置的值。

示例

以下示例显示了一个应用程序设置文件,该文件定义两个应用程序范围的设置和两个用户范围的设置:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
      <section name="WindowsApplication1.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
    </sectionGroup>
    <sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
      <section name="WindowsApplication1.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" />
    </sectionGroup>
  </configSections>
  <applicationSettings>
    <WindowsApplication1.Properties.Settings>
      <setting name="Cursor" serializeAs="String">
        <value>Default</value>
      </setting>
      <setting name="DoubleBuffering" serializeAs="String">
        <value>False</value>
      </setting>
    </WindowsApplication1.Properties.Settings>
  </applicationSettings>
  <userSettings>
    <WindowsApplication1.Properties.Settings>
      <setting name="FormTitle" serializeAs="String">
        <value>Form1</value>
      </setting>
      <setting name="FormSize" serializeAs="String">
        <value>595, 536</value>
      </setting>
    </WindowsApplication1.Properties.Settings>
  </userSettings>
</configuration>

请参阅