应用程序设置架构

应用程序设置允许 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 中的配置

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

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

<applicationSettings> 元素

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

<userSettings> 元素

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

<setting> 元素

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

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

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

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

<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> 元素

此元素包含设置的值。

Example

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

<?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>

另请参阅