Esquema de configurações do aplicativo

As configurações do aplicativo permitem que um aplicativo Windows Forms ou ASP.NET armazene e recupere configurações de escopo do aplicativo e do usuário. Nesse contexto, uma configuração é qualquer informação que possa ser específica para o aplicativo ou específica para o usuário atual – qualquer coisa, desde uma cadeia de conexão de banco de dados até o tamanho da janela padrão preferencial do usuário.

Por padrão, as configurações de aplicativo em um aplicativo Windows Forms usam a classe LocalFileSettingsProvider, que usa o sistema de configuração .NET para armazenar configurações em um arquivo de configuração XML. Para obter mais informações sobre os arquivos usados pelas configurações do aplicativo, consulte a Arquitetura de Configurações do Aplicativo.

Importante

A maioria das seções de configuração definidas pelo .NET Framework não são mais funcionais nas versões .NET 6+ e .NET Core. ConfigurationManager é fornecido apenas para compatibilidade. Em vez de app.config, o .NET moderno usa o arquivo appsettings.json para configurações de aplicativo. Confira Modernizar após a atualização para o .NET a partir do .NET Framework.

Considere remover o uso em app.config e chamar a API correspondente, se disponível, para fazer a mesma configuração. Para obter mais informações, confira Configuração no .NET.

As configurações do aplicativo definem os seguintes elementos como parte dos arquivos de configuração que ele usa.

Elemento Descrição
<applicationSettings> Contém todas as marcas de <configuração> específicas do aplicativo.
<userSettings> Contém todas as marcas de <configuração> específicas do usuário.
<setting> Define uma configuração. Filho de <applicationSettings> ou <userSettings>.
<value> Define o valor de uma configuração. Filho da <configuração>.

<Elemento applicationSettings>

Esse elemento contém todas as marcas de <configuração> específicas de uma instância do aplicativo em um computador cliente. Não define nenhum atributo.

<Elemento usarSettings>

Esse elemento contém todas as marcas de <configuração> específicas para o usuário que está usando o aplicativo no momento. Não define nenhum atributo.

Elemento <setting>

Esse elemento define uma configuração. Ele possui os seguintes atributos.

Atributo Descrição
name Obrigatórios. A ID exclusiva da configuração. As configurações criadas por meio do Visual Studio são salvas com o nome ProjectName.Properties.Settings.
serializeAs Obrigatórios. O formato a ser usado para serializar o valor em texto. Os valores válidos são:

- string. O valor é serializado como uma cadeia de caracteres usando um TypeConverter.
- xml. O valor é serializado usando a serialização de XML.
- binary. O valor é serializado como binário codificado em texto usando serialização binária.
- custom. O provedor de configurações tem conhecimento inerente dessa configuração e serializa e a des serializa.

Adicione os nomes das configurações que você criou em <applicationSettings> como entradas no elemento <configSections> na parte superior do arquivo. Por exemplo:

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

Elemento <value>

Esse elemento contém o valor de uma configuração.

Exemplo

O exemplo a seguir mostra um arquivo de configurações de aplicativo que define duas configurações no escopo do aplicativo e duas configurações no escopo do usuário:

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

Confira também