Uma das novidades do .NET Core Preview 1 é o novo sistema de global tools, ou ferramentas globais. Para ver mais sobre outras novidades e um pouco do que está por vir nesse grande update do .NET Core, dê uma olhada neste post aqui: .NET Core 2.1 Preview 1 – o que tem de legal?!.

O que são Global tools?

Eventualmente queremos usar algumas ferramentas através da linha de comando e não apenas como um pacote. Talvez não faça muito sentido em usar um pacote como Ninject como uma ferramenta de linha de comando. Porém existem algumas ferramentas que podem ser distribuídas e utilizadas desta forma, por exemplo o próprio Nuget.

O Preview 1 do .NET Core 2.1 traz esse mecanismo de distirbuição e empacotamento para suportar este tipo de ferramenta.

Instalando .NET Core 2.1 Preview 1

Antes de continuar instalando as tools, precisamos instalar o .NET Core 2.1 Preview 1, ou nada vai funcionar. Esta instalação é bastante simples.

Acesse o link para os downloads: https://www.microsoft.com/net/download/dotnet-core/sdk-2.1.300-preview1.

Siga os passos da opção escolhida e ao final você deverá conseguir rodar alguns comandos do .NET Core 2.1 Preview 1:

Para obter uma lista dos comandos disponíveis:

dotnet

Para obter a versão do .NET:

botnet --version
Comandos dotnet

Comandos dotnet

Instalando uma global tool

O processo de instalação de uma global tool é bastante simples. O comando base é:

dotnet install tool -g 

O comando é bastante descritivo. A única novidade que temos é o parâmetro -g, que indica que esta é uma instalação global.

Instalar a ferramenta de forma global quer dizer que ela estará disponível no seu shell/terminal, independente de você iniciar uma nova sessão ou reiniciar a máquina.

Utilizando uma global tool

O uso das ferramentas globais (global tools) é bastante simples. Elas estarão disponíveis para execução diretamente a partir do console, vejamos:

Instalando e executando dotnetsay

Instalando e executando dotnetsay

Reparem como a instalação cuidou de tudo, sem necessidade de reiniciar o terminal, modificar PATH, etc.

O que esta ferramenta faz é exibir um texto na tela, que é “falado” pelo mascote do .NET.

Observação: Infelizmente no momento não é possível filtrar por pacotes Nuget que possam ser instalados como ferramentas globais.

Removendo uma global tool

O Preview 1 do .NET Core 2.1 ainda não possui um commando de uninstall (é possível ver no GitHub que isso já existe em uma nova branch de preview).

A melhor formar de remover uma ferramenta atualmente é deletando-a de sua pasta.

No Mac/Linux:

rm -r ~/.dotnet/tools/

No Windows:

Remove-Item %HOMEPATH%/.dotnet/tools/

Resumo

Para pessoas que trabalham bastante com terminal (todas nós?), pessoas e projetos que estejam utilizando práticas de automação, estas ferramenta podem acabar se tornando de grande ajuda. O fato de ter uma forma simples de criar, empacotar e distribuir estas ferramentas é um passo bastante interessante e importante. Facilidade na distribuição é a grande chave e o grande chamariz aqui. Isso somado com o fasto de que temos o poder de todo o .NET para a criação e desenvolvimento destas ferramentas é bastante importante.

No próximo artigo vou explicar como criar uma ferramenta que possa ser utilizada como global tool, seguindo os exemplos das ferramentas criados pelo Giovanni Bassi (dnx) e por mim (dotnetps).