Posted on junho 1, 2020
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).
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…)
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.
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!