DEV Community

Cover image for Criando arquivos de configuração para ambientes de release e debug .net com SlowCheetah
Leticia Campos
Leticia Campos

Posted on

Criando arquivos de configuração para ambientes de release e debug .net com SlowCheetah

Ao desenvolver uma aplicação do tipo Windows Services, Windows Forms ou Console Application nos deparamos com 2 tipos de ambientes de desenvolvimento: Release e Debug.

Por padrão essas aplicações contém o seguinte arquivo de configuração: App.config

App.config

Para criar os arquivos de configuração por ambiente será necessário adicionar a extensão SlowCheetah no seu Visual Studio

Extension SlowCheetah

Em seguida instalar o pacote do SlowCheetah no seu projeto

Referencias

Gerencia pacotes Nuget

Instala SlowCheetah

Confirma instalacao

Após concluir a instalação será adicionado a referência dentro do arquivo packages.config e caso você ainda não tenha o arquivo o mesmo será gerado de forma automática.

Package

Com tudo instalado, clique em cima do App.config com o botão direito e será exibido a opção de adicionar transformação

Add Transform

Ao clicar nessa opção será gerado dois arquivos App.Debug.config e App.Release.config

Arquivos de configuração por ambiente

No arquivo principal App.Config adicione a tag e dentro dela crie algumas chaves e valores correspondentes, na minha aplicação de exemplo ficou assim:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <appSettings>
        <add key="Cep" value="01001000"/>
        <add key="Formato" value="json"/>
    </appSettings>
</configuration>
Enter fullscreen mode Exit fullscreen mode

A minha aplicação realiza a busca de endereços a partir da API de busca CEP passando como parâmetro o CEP e o formato de retorno

Nos arquivos de configuração por ambiente App.Debug.Config e App.Release.Config será necessário adicionar os campos xdt:Transform="SetAttributes" e xdt:Locator="Match(key)" em toda propriedade, no meu caso ficou assim:

App.Release.Config

<?xml version="1.0" encoding="utf-8"?>
<!--For more information on using transformations see the web.config examples at http://go.microsoft.com/fwlink/?LinkId=214134. -->
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
    <appSettings>
        <add key="Cep" value="22222000" xdt:Transform="SetAttributes" xdt:Locator="Match(key)"/>
        <add key="Formato" value="json" xdt:Transform="SetAttributes" xdt:Locator="Match(key)"/>
    </appSettings>
</configuration>
Enter fullscreen mode Exit fullscreen mode

App.Debug.Config

<?xml version="1.0" encoding="utf-8"?>
<!--For more information on using transformations see the web.config examples at http://go.microsoft.com/fwlink/?LinkId=214134. -->
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
    <appSettings>
        <add key="Cep" value="77777000" xdt:Transform="SetAttributes" xdt:Locator="Match(key)"/>
        <add key="Formato" value="json" xdt:Transform="SetAttributes" xdt:Locator="Match(key)"/>
    </appSettings>
</configuration>
Enter fullscreen mode Exit fullscreen mode

Dessa forma o compilador em tempo de execução irá trocar os valores configurados no arquivo principal por aqueles configurados no ambiente em execução.

Para realizar o teste, no Visual Studio tem a opção de selecionar o ambiente (no meu caso vou deixar o de release)

release

Criei o seguinte código para obter as propriedades do ambiente

        private CEP ObtemPropriedadesDoAmbiente
        {
        get
            {
                CEP dados = new CEP();
                dados.Cep = ConfigurationManager.AppSettings["Cep"];
                dados.Formato = ConfigurationManager.AppSettings["Formato"];
                return dados;

            }
        }
Enter fullscreen mode Exit fullscreen mode

E os dados retornados, será o que foi configurado no ambiente de release

dados release

Bom, é isso pessoal!

Espero que tenham gostado e até o próximo post :)

Discussion (0)