Setando diferentes ambientes com AspNet Core

  • Rafael Miceli
  • 28 Fev 2017

Se você estivesse fazendo uma aplicação com AspNet MVC 5 e quisesse ter seu código preparado para suportar diferentes ambientes (como dev, teste e produção) você faria isso com seu web.config. Tendo diferentes web.ambiente.config.

De padrão de inicio um template de aplicação MVC 5 ja vinha com web.debug.config e web.release.config.

imagem1

Para você alternar entre configs de diferentes ambientes bastava você selecionar o seu build configuration no Visual Studio

imagem2

Mas… Com AspNet Core isso deu uma mudada…

Não mais “configs”

No Aspnet Core não definimos mais os diferentes ambientes com o web.config.

Apesar de ter um web.config no AspNet Core ele é apenas para configurações espcíficas com IIS e nada mais. Configurações da sua aplicação agora vão em appsettings.json

AppSettings.json

Agora utilizamos o appsettings.json paara armazenarmos as configurações da nossa aplicação. E como era no antigo web.ambiente.config também temos o mesmo com appsettings.ambiente.json.

Se você criar uma aplicação AspNet Core com o template de Aplicação Web completa com Yo você pode ver seu appsettings.json

imagem3

Perceba que não temos ainda os ambientes… Mas vamos fazer isso. Crie uma copia do appsettings.json, mas com o nome appsettings.Production.json e renomeie o outro para appsettings.Development.json.

imagem4

E neles crie uma key para testarmos chamada “Teste” e no appsettings.Development.json coloque o valor Dev e no outro Prod.

imagem5

imagem6

Preparando o Startup.cs

Em nosso Startup.cs nós temos nossa propriedade Configuration que é um IConfigurationRoot que define aonde estão as configurações da nossa aplicação! Isso definimos no Construtor do nosso Startup.cs com um ConfigurationBuilder

imagem7

E lá temos nosso .AddJsonFile adicionando o appSettings.ambiente.json:

imagem8

O próximo passo é definirmos qual Environment vai ser injetado no parâmetro do nosso construtor IHostingEnvironment. Se não dfinirmos o Envronment por padrão ele vai setar o Production, o que não queremos para desenvolver localmente.

Para definirmos nosso Environment podemos usar o powershell na raiz do projeto e executar o comando:

$Env:ASPNETCORE_ENVIRONMENT = "Development"

Agora quando executarmos dotnet run vemos que nosso projeto rodou em ambiente de Development.

Para provar isso adicione o seguinte código após o Configuration = builder.Build();

Console.WriteLine($"ambiente = {Configuration["Teste"]}");

Com este código vamos exibiri o valor da nossa key Teste.

comentarios com Disqus Disqus