Detalhes desconhecidos: como recuperar a seção applicationSettings de um arquivo App.config?

Esses dias, enquanto estava configurando um serviço em um dos projetos do trabalho, tive um momento de nervoso porque não fazia a menor ideia de como recuperar um dado da seção applicationSettings, que fica dentro do arquivo App.config.

Explico: trabalhar com os .config da vida não é algo novo para mim; praticamente todos os projetos do meu trabalho tem um. É um arquivinho deveras útil quando precisamos parametrizar certos aspectos do sistema (e não queremos que este seja recompilado para que a parametrização funcione).

Um homem negro digita em um computador enquanto uma fogueira arde ao seu lado.

Porém, eu só havia me deparado com dois cenários esse tempo todo:

1- criar uma seção de appSettings e declarar meus parâmetros ali dentro, com chave e valor:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
   <appSettings>
      <add key="NomeDoParametro" value="Valor do parâmetro" />
   </appSettings>
</configuration>

E recuperá-los via ConfigurationManager, da biblioteca System.Configuration:

using System.Configuration;

private string _recuperandoParametroArquivoConfig = ConfigurationManager.AppSettings["NomeDoParametro"];

2- criar uma seção relativa à algo específico e ali criar os parâmetros com chave e valor:

<NomeDaSecao>
      <Autenticacao>
         <add key="Username" value="Usuario" />
         <add key="Password" value="SenhaDoUsuario" />
      </Autenticacao>
      <Constantes>
         <add key="Endereco" value="ValorDoEndereco" />
      </Constantes>
</NomeDaSecao>

E recuperá-los com o NameValueCollection e ConfigurationManager:

NameValueCollection Autenticacao = (NameValueCollection)ConfigurationManager.GetSection("NomeDaSecao/Autenticacao");
NameValueCollection Constantes = (NameValueCollection)ConfigurationManager.GetSection("NomeDaSecao/Constantes");

string Url = Constantes.Get("Endereco");

Pois bem, ali estava eu, em um cenário totalmente novo: eu tinha uma tag applicationSettings e precisava do valor que ficava ali dentro dela.

    <applicationSettings>
        <Projeto.Properties.Settings>
            <setting name="NomeDaConfiguracao" serializeAs="String">
                <value>ValorDaConfiguracao</value>
            </setting>
        </Projeto.Properties.Settings>
    </applicationSettings>

Depois de uns 10 segundinhos de nervoso pensando: “como é que eu chego ali?”, fui consultar o Oráculo (Google + Stack Overflow) e a solução é MUITO mais simples do que eu podia imaginar. (Às vezes eu esqueço que o Visual Studio pode facilitar bastante a nossa vida…)

Robert Downey Jr. fazendo sinais de joinha com as mãos.

Antes de mais nada, a solução original você encontra aqui.

Então vamos lá: primeiro eu quero que você veja como o applicationSettings se conecta ao seu projeto. Vamos de botão direito no seu projeto e ir até a opção Properties. Assim que abrir a aba no seu Visual Studio, vá até o menu Settings.

Print do Visual Studio

E voilá! Aqui você consegue ver a propriedade que estava no App.Config, dentro da applicationSettings, listada como uma configuração do seu projeto. Onde está a seta azul é onde vai aparecer o nome da propriedade (no caso do que exemplifiquei lá em cima, NomeDaConfiguracao) e onde está a seta rosa é onde vai aparecer o valor da propriedade (ValorDaConfiguracao).

Mas como acessamos isso? Simples:

string recuperandoValorConfiguracao = Properties.Settings.Default.NomeDaConfiguracao;

Sim, é fácil assim.

Sim, eu paniquei por causa disso. Acontece. Na próxima, já estarei mais preparada (:

Espero que esse post possa ajudar você também. Abraço!

Edna Moda batendo na Helena Pêra (de Os Incríveis) e dizendo: "Put yourself together!" ("Se recomponha!")

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *