Fala galera, beleza? Dando continuidade àquele post sobre Primeiros Passos com ASP.NET 5, chegou a hora de conhecer um pouco do DNVM ou .NET Version Manager.

O que é o DNVM?

Entender o DNVM é algo bastante simples (pois a ferramenta em si é bastante simples). Hoje como o .NET é capaz de rodar como runtime em ambientes Windows, OSX e Linux é bastante comum que tenhamos diferentes versões do runtime em uma mesma máquina. Isso pode acontecer por diversas razões. O DNVM é uma ferramenta simples que nos permite , instalar/remover, atualizar e claro utilizar versões do Runtime .NET de forma horizontal, ou seja, podemos ter diferentes versões coexistindo lado-a-lado sem que uma interfira no funcionamento ou existência da outra.

Isso tudo é feito de uma maneira bem simples pois o que o DNVM faz é colocar no seu PATH – de forma temporária ou para uma sessão – qual é a versão do runtime (DNX ou .NET Execution Environment) que deve ser utilizada.

Open Source

Como eu já disse anteriormente sobre o VS Code e o ASP.NET, o DNVM também é Open Source. Para sermos ainda mais simplistas o DNVM é composto de um único arquivo (para cada plataforma) com alguns scripts executados em linha de comando. Confira os script aqui no Repositório do DNVM.

Instalando o DNVM

A instalação do DNVM é também é simples em todas as plataformas, embora mude um pouco em cada uma, no final teremos praticamente a mesma ferramenta rodando em cada uma delas, e isso é muito bom pois gera consistência.

Instalando DNVM no Windows

Quando instalamos o ASP.NET 5 no Windows ganhamos o DNVM. Mais simples impossível. Confira aqui direto como instalar o DNVM no Windows.

Instalando DNVM no OSX (Mac)

A instalação no Mac é simples também, uma linha de comando e tudo estará pronto (nada que o pessoal que usa OSX não esteja acostumado):

curl -sSL https://raw.githubusercontent.com/aspnet/Home/dev/dnvminstall.sh | DNX_BRANCH=dev sh && source ~/.dnx/dnvm/dnvm.sh

Confira aqui como instalar o DNVM no Mac (OSX).

Instalando DNVM no Linux

No Linux o processo é bastante parecido com o Mac. As diferenças que serão encontradas estão em como instalar as dependências para o Runtime do .NET (DNX), então confira aqui como instalar o DNVM no Linux.

Usando o DNVM

Agora que o DNVM já está instalado em sua máquina já é possível utiliza-lo. A primeira coisa que faremos é abrir um terminal (ou Powershell se você estiver no Windows) e executar:

dnvm -v

Se tudo estiver funcionando você deve ver um output parecido com:

➜ ~ dnvm -v
1.0.0-rc2-15546

Usando o help do DNVM

Para verificarmos quais os comandos disponíveis vamos digitar.

dnvm --help

ou

dnvm -h

Além de verificar os comandos disponíveis temos as listas de parâmetros que cada um deles aceita, suas descrições, obrigatoriedades, etc, como vemos no exemplo abaixo:
DNVM --help
(na imagem acima eu utilizei | grep less para que eu pudesse paginar a ajuda 😛 )

Listando os Runtimes instalados com DNVM

Para verificarmos quais os runtimes .NET estão instalados basta digitarmos:

dnvm list

Que no meu caso dá o seguinte output:
DNVM list

Instalando um Runtime .NET com DNVM

Se você não possui nenhum runtime instalado basta executar o comando:

dnvm upgrade

Isto deverá instalar o Runtime mais atual.

Para instalar um runtime específico você pode utilizar o comando:

dnvm install <versão>

Por exemplo instalando a versão beta-8 do .NET Core:

dnvm install 1.0.0-beta8

Assim você terá esta versão instalada:
Instalando versão com DNVM

Mudando entre versões com DNVM

A grande vantagem de ter um gerenciador de versões é poder trocar entre elas quando for necessário. Com o DNVM fazemos isso utilizando o comando use :

dnvm use 1.0.0-beta8

Trocando versões do .NET com DNVM
Repare que quando utilizamos o comando use o DNVM nos informa que está adicionando uma versão específica ao PATH. E se executarmos o comando list veremos que oa versão ativa é a que acabamos de informar ao use .

Configurando a versão padrão do .NET com DNVM

Para marcar uma versão como padrão (default) usando o DNVM basta utilizar o parâmetro -p ou -persistent com o comando use:

dnvm use 1.0.0-rc1-update1 -p

Definindo versão padrão do .NET com DNVM

Finalizando

Esta foi uma introdução mas que mostra bem o funcionamento, a idéia e algumas das principais funcionalidades do DNVM. Ter versões diferentes de um Runtime rodando na mesma máquina, de forma independente, é algo que algumas tecnologias já utilizavam e isso faz bastante sentido quando você trabalha com diferentes projetos que pode ou não estar com versões diferentes do Runtime, mantendo cada um deles isolados e independentes (já que o Runtime está isolado também).

Lembrando que o DNVM é apenas uma ferramenta que faz uso de todo poder do .NET como foi reescrito. Se você tiver alguma dúvida basta dar uma pequena fuçada no código fonte dos scripts aqui no Repositório do DNVM no Github 😉

Quaisquer dúvidas mandem nos comentários. Abraços!

Vinicius Quaiato