应用程序设置架构
应用程序设置允许 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>