![]()
Durante o ciclo de vida de uma aplicação, seja durante o seu desenvolvimento ou manutenção, é prática comum distribuir a aplicação por um conjunto distinto de ambientes, de forma a garantir qualidade no software produzido.
Estes ambientes são definidos em conjunto com as funções que desempenham, normalmente são três: desenvolvimento, testes e produção.
Cada ambiente é uma caixa estanque, tem o seu próprio conjunto de servidores (Web, SQL, etc..) de forma a que estejam reunidas todas as condições para que um ambiente não necessite de aceder a recursos de outro ambiente para funcionar, garantindo-se assim consistência.
Podemos olhar para cada um destes ambientes como uma etapa no decorrer de um desenvolvimento num projecto. No ambiente de desenvolvimento o developer pode testar toda e qualquer situação sem necessitar de se preocupar por exemplo com a consistência de dados na base de dados. O ambiente de testes é aquele em que depois de estarem concluídos os desenvolvimentos são executados todo o tipo de testes para garantir que os desenvolvimentos efectuados se encontram correctos, tanto do ponto de vista técnico como nas regras de negócio. Normalmente este ambiente necessita de ter garantida a consistência de dados. Depois de estes dois estágios estarem concluídos temos o ambiente de produção, este é o ambiente no qual utilizador da aplicação efectua as suas operações e toda a aplicação necessita estabilidade.
Como estamos a falar de três ambientes, cada um deles com configurações específicas, como é o caso de endereços de servidores web, sql, entre outros, por vezes torna-se difícil gerir as configurações correctas para o ambiente que vamos executar uma publicação.
Para nos ajudar nesta situação, o Visual Studio disponibiliza uma ferramenta para este fim, o Configuration Manager.
Todos os developers utilizam esta ferramenta diariamente, só que normalmente apenas para trocar a configuração de Debug para Release ou vice-versa. No entanto esta ferramenta permite fazer muito mais, permite criar ambientes personalizados com configurações específicas, como um web.config personalizado e adequado a cada um dos ambientes.
Neste post vou explicar como criar e configurar ambientes personalizados no Configuration Manager do Visual Studio, que permitem garantir que, ao alterar o ambiente em utilização, a aplicação está a utilizar todas as configurações específicas desse mesmo ambiente de forma automática e sem a necessidade de intervenção do developer.
1º Passo:
Criar uma directoria na raíz do projecto, com o nome “Ambientes”, e dentro dessa pasta criar uma directoria para cada um dos ambientes que vamos personalizar.
Copiar para a directoria de cada ambiente o seu web.config personalizado e adequado.
De seguida abrir o Configuration Manager.
2º Passo:
Criar uma configuração para cada um dos ambientes que vamos criar, neste exemplo vou criar os ambientes Local, Testes e Produção.
Para os ambientes Local e Testes, vou copiar as configurações base do ambiente de Debug e para o ambiente de Produção vou efectuar a cópia do ambiente de Release.
3º Passo:
Remover as configurações de Debug e Release da Solution.
4º Passo:
Remover as configurações de Debug e Release do projecto.
5º Passo
Nas propriedades do projecto, ir a “Build Events” e carregar em “Edit Post-Build” e de seguida colar na caixa de texto a seguinte macro:
xcopy /R /Y "$(ProjectDir)Ambientes\$(ConfigurationName)\Web.config" "$(ProjectDir)Web.config"
Agora, sempre que necessitar de executar uma publicação, apenas necessita de seleccionar o ambiente que deseja publicar, fazer build e tem todas as configurações necessárias para executar a aplicação correctamente no ambiente seleccionado.
Criei um projecto de teste, uma aplicação web em que a página Default.aspx mostra que ambiente está em utilização.
Pode fazer o download do projecto de teste aqui.