Global Tools no .NET Core 2.1 \| TreinaWeb               Promoção no ar   Matricule-se agora e garanta **54% de desconto**  

  Termina em   Tempo restante da oferta: 22 Horas 

 02 Min 

 53 Seg 

   Tempo restante da oferta: 22 02 53 

  [Assinar →](https://www.treinaweb.com.br/checkout/pagamento/plano/anual?cupom=TW-SCLIENTE26) 

   [                ](https://www.treinaweb.com.br)  Explorar  

 [ Quanto custa? ](#assinatura) [ FAQ ](https://www.treinaweb.com.br#faq) [Matricule-se](#assinatura) [ Entrar ](https://www.treinaweb.com.br/login) 

     [ Início ](https://www.treinaweb.com.br) [ Artigos ](https://www.treinaweb.com.br/blog) Global Tools no .NET Core 2.1  [ C# ](https://www.treinaweb.com.br/blog/categoria/csharp) [ .NET Core ](https://www.treinaweb.com.br/blog/categoria/net-core) 

# Global Tools no .NET Core 2.1

 Conheça o recurso de global tool adicionado na versão 2.1 do .NET Core e aprenda como definir uma a partir de um projeto console.

 [ Wladimilson M. Nascimento ](https://www.treinaweb.com.br/blog/autor/wladimilson-m-nascimento) 9 anos atrás

  ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2018/05/03175136/NET-CORE-2.1.png)  

Neste artigo vou falar sobre as Global Tools, que é um recurso adicionado na versão 2.1 do .NET Core.

Uma global tool é um pacote “especial” do NuGet que contém uma aplicação console. Quando esta aplicação é instalada como uma ferramenta, o .NET Core CLI irá baixar o seu arquivo, extrair no disco e disponibilizá-la como um comando de terminal.

Nos bastidores, o .NET Core CLI está apenas adicionando o caminho da aplicação na variável de ambiente PATH do sistema. E por ser executada pelo terminal, que este recurso só é valido para as aplicações console.

Aqui não existe limitação do que a aplicação pode implementar. Ou seja: caso a aplicação console esteja executando corretamente, ela pode ser convertida para uma “global tool”.

Para entender isso na prática, vamos criar uma aplicação simples de renomeação de arquivos.

[  ![C# - Estrutura de dados e Collections](https://d2knvm16wkt3ia.cloudfront.net/assets/svg-icon/c-sharp.svg)   Curso C# - Estrutura de dados e Collections Conhecer o curso ](https://www.treinaweb.com.br/curso/c-sharp-estrutura-de-dados-e-collections)

## Ambiente

Antes de colocarmos a mão na massa, é importante que a versão 2.1 (ou superior) do .NET Core esteja instalada na máquina.

Para este artigo, estou utilizando a versão `2.1.4` do .NET Core, em uma máquina Mac OS X.

### Colocando a mão na massa

Como dito, uma global tool é criada a partir de uma aplicação console, assim, a primeira coisa que deve ser feita é criar esta aplicação:

```dos
dotnet new console -n RenomearArquivos

```

Em seguida o seu código deve ser definido. No nosso exemplo, ele será:

```csharp
class Program
{
    static void Main(string[] args)
    {
        if(args.Count() == 0)
            Console.WriteLine("Nenhuma opção foi informada! Indique o diretório (-d), filtro (-t) e prefixo (-n)");
        else
        {
            var diretorio = String.Empty;
            var filtro = "*";
            var prefixo = String.Empty;

            for(var i = 0; i < args.Count(); i++)
            {
                switch (args[i].ToLower())
                {
                    case "-d":
                        diretorio = args[++i];
                        break;
                    case "-t":
                        filtro = args[++i];
                        break;
                    case "-n":
                        prefixo = args[++i];
                        break;
                    default:
                        Console.WriteLine($"Opção {args[i]} inválida!");
                        Environment.Exit(1);
                        break;
                }
            }

            Renomear(diretorio, filtro, prefixo);
        }

    }

static void Renomear(string diretorio, string filtro, string prefixo){

        Console.WriteLine("Arquivos renomeados:");
        foreach(var arq in Directory.GetFiles(diretorio, filtro))
        {
            var novoArquivo = Path.Combine(Path.GetDirectoryName(arq), String.Format("{0} - {1}", prefixo, Path.GetFileName(arq)));
            File.Move(arq, novoArquivo);
            Console.WriteLine(novoArquivo);
        }
    } 
} 

```

Como é possível notar, esta aplicação é bem simples.

Ao executá-la, veremos o seguinte resultado:

![](https://dkrn4sk0rn31v.cloudfront.net/2018/05/02162820/projeto-de-global-tool.png)

Mas como disse, qualquer aplicação console pode ser transformada em uma global tool. Infelizmente, ainda não há uma página que organize todas as global tools disponíveis, mas [aqui](https://github.com/aspnet/DotNetTools/) contém ótimos exemplos de ferramentas criadas pela equipe do ASP.NET Core.

## Empacotando a aplicação

Para disponibilizar a nossa aplicação como uma global tool precisamos empacotá-la em um pacote NuGet. Para isso, temos de adicionar algumas informações no arquivo de configuração do projeto (\***.csproj**):

```xml

  Exe
  netcoreapp2.1
  true
  renarquivos
  1.0.0
  A example of a tool for the Treinaweb Blog

```

Onde:

- PackAsTool: Indica que a aplicação deve ser empacotada como uma global tool;
- ToolCommandName: Indica o comando utilizado para invocar a aplicação. Caso isso não seja especificado, será utilizado o nome da aplicação;
- Version: A versão da aplicação;
- Description: Descrição da ferramenta.

E, deve ser criado na raiz da aplicação um arquivo chamado **.nuspec** onde deve ser adicionado a informação abaixo:

```xml

```

Ela indica que o pacote a será criado deve ser tratado como uma global tool. Sem esta informação, o pacote até pode ser criado, mas não seria possível instalá-lo como uma global tool.

Com essas informações definidas, a aplicação pode ser empacotada com o comando abaixo:

```dos
dotnet pack . -c Release -o nupkg

```

Este comando irá compilar a aplicação para “release”, e irá gerar o arquivo de pacote dela na pasta **nupkg**. Para testar a ferramenta, acesse a pasta nupkg e execute o comando abaixo:

```dos
dotnet new nugetconfig

```

Este comando irá gerar um arquivo de configuração do NetGet (**nuget.config**) onde deve ser informando o caminho do arquivo NuGet que acabamos de gerar:

```xml

```

Desta forma, sempre que o comando de edição de pacotes for executado no nível desta pasta, ele também irá procurar por pacotes contidos nela.

## Instalado a Global Tool

Por fim, para instalar a global tool que acabamos de definir, basta executar no nível da sua pasta, o comando abaixo:

```dos
dotnet tool install -g RenomearArquivos

```

Após isso, a nossa global tool estará disponível como comando no terminal:

![](https://dkrn4sk0rn31v.cloudfront.net/2018/05/02162819/global-tools-instalada.png)

Simples não, é? O código desta aplicação está disponível [aqui](https://github.com/wladimilson/renomeararquivos "aqui").

Em artigos futuros falarei de outros recursos da versão 2.1 do .NET Core. Até lá!

[  ![C# (C Sharp) Intermediário](https://d2knvm16wkt3ia.cloudfront.net/assets/svg-icon/csharp.svg)   Curso C# (C Sharp) Intermediário Conhecer o curso ](https://www.treinaweb.com.br/curso/csharp-intermediario)

- [ #C# ](https://www.treinaweb.com.br/blog/tag/csharp)
- [ #.NET Core ](https://www.treinaweb.com.br/blog/tag/net-core)
- [ #Global Tool ](https://www.treinaweb.com.br/blog/tag/global-tool)

Autor

 ![Wladimilson M. Nascimento](//secure.gravatar.com/avatar/f0dd442f156a3eacd2880e9cd0eafbd1?d=mm)

## Wladimilson M. Nascimento

 Instrutor, nerd, cinéfilo e desenvolvedor nas horas vagas. Graduado em Ciências da Computação pela Universidade Metodista de São Paulo. 

 [Todos os artigos](https://www.treinaweb.com.br/blog/autor/wladimilson-m-nascimento)  

## Continue estudando

 Transforme leitura em prática com os cursos e formações da TreinaWeb.

 [Ver cursos](https://www.treinaweb.com.br/cursos)   

  Continue lendo

## Artigos relacionados

- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2020/01/10162055/asp-net-beanstalk-400x280.png)  [ C# ](https://www.treinaweb.com.br/blog/categoria/csharp) 

     7 anos atrás

    ##  [ Publicando uma aplicação .NET Core 3.0 no AWS Elastic Beanstalk ](https://www.treinaweb.com.br/blog/publicando-uma-aplicacao-net-core-3-0-no-aws-elastic-beanstalk) 

     Nesse artigo vamos aprender como publicar e configurar um projeto desenvolvido em ASP.NET Core 3.0 no Elastic Beanstalk, o serviço do tipo plataforma como serviço da AWS especializado para aplicações web.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2020/08/clicando-publicando-lambda-com-net-core-cli-400x280.png)  [ C# ](https://www.treinaweb.com.br/blog/categoria/csharp) 

     6 anos atrás

    ##  [ Criando e publicando uma função AWS Lambda com o CLI do .NET Core ](https://www.treinaweb.com.br/blog/criando-e-publicando-uma-funcao-aws-lambda-com-o-cli-do-net-core) 

     O .NET Core CLI, que já é uma ferramenta poderosa e com recursos fornecidos pela AWS, também permite criar e gerar funções Lambda.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2019/06/03131718/DIAGNÓSTICO-400x280.png)  [ Infraestrutura e Sistemas Operacionais ](https://www.treinaweb.com.br/blog/categoria/infraestrutura-e-sistemas-operacionais) 

     8 anos atrás

    ##  [ Diagnosticando uma aplicação no .NET Core 3.0 ](https://www.treinaweb.com.br/blog/diagnosticando-uma-aplicacao-no-net-core-3-0) 

     Conheça as ferramentas dotnet-counters, dotnet-trace e dotnet-dump. E aprenda como elas auxiliam no diagnóstico de uma aplicação .NET Core.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2020/09/enviando-e-mails-no-asp-net-core-400x280.png)  [ C# ](https://www.treinaweb.com.br/blog/categoria/csharp) 

     6 anos atrás

    ##  [ Enviando e-mails no ASP.NET Core ](https://www.treinaweb.com.br/blog/enviando-e-mails-no-asp-net-core) 

     O .NET possui um módulo nativo para o envio de e-mails. Entretanto, veja como facilitar este processo utilizando a biblioteca Coravel.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2020/11/criando-aplicacoes-desktop-multiplataforma-com-asp-net-core-e-electron-net-400x280.png)  [ ASP .NET ](https://www.treinaweb.com.br/blog/categoria/asp-net) 

     6 anos atrás

    ##  [ Criando aplicações desktop multiplataforma com ASP.NET Core e Electron.NET ](https://www.treinaweb.com.br/blog/criando-aplicacoes-desktop-multiplataforma-com-asp-net-core-e-electron-net) 

     Otimize a criação de aplicações desktop reutilizando códigos do ASP.NET Core, com a ajuda do Electron.NET.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2021/02/gerando-apis-clients-com-as-ferramentas-de-openapi-do-net-400x280.png)  [ Desenvolvimento Back-end ](https://www.treinaweb.com.br/blog/categoria/desenvolvimento-back-end) 

     6 anos atrás

    ##  [ Gerando APIs clients com as ferramentas de OpenAPI do .NET ](https://www.treinaweb.com.br/blog/gerando-apis-clients-com-as-ferramentas-de-openapi-do-net) 

     Aprenda como gerar APIs clientes com a global tool Microsoft.dotnet-openapi.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2017/06/utilizando-o-firebase-authentication-em-uma-aplicacao-android-400x280.png)  [ Android ](https://www.treinaweb.com.br/blog/categoria/android) 

     10 anos atrás

    ##  [ Utilizando o Firebase Authentication em uma aplicação Android ](https://www.treinaweb.com.br/blog/utilizando-o-firebase-authentication-em-uma-aplicacao-android) 

     Veja como implementar o Firebase Authentication em uma aplicação Android, usando o Android Studio.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2021/05/GUIA-LINGUAGEM-JAVASCRIPT-400x280.png)  [ Desenvolvimento Front-end ](https://www.treinaweb.com.br/blog/categoria/desenvolvimento-front-end) 

     6 anos atrás

    ##  [ Guia da Linguagem JavaScript ](https://www.treinaweb.com.br/blog/guia-da-linguagem-javascript) 

     Neste Guia da Linguagem Javascript vamos abordar aspectos fundamentais, como: tipos de dados, variáveis, objetos, arrays e muito mais.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2018/06/05005243/microsoft-github-400x280.png)  [ Tecnologia ](https://www.treinaweb.com.br/blog/categoria/tecnologia) 

     9 anos atrás

    ##  [ Microsoft compra o GitHub. E agora? ](https://www.treinaweb.com.br/blog/microsoft-compra-o-github-e-agora) 

     Os desenvolvedores foram bombardeados no dia 4 de junho de 2018 com uma notícia inesperada: a aquisição do GitHub pela Microsoft. Quais devem ser as implicações práticas para as comunidades de desenvolvimento com essa aquisição?

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2021/05/onde-come-ar-400x280.jpg)  [ Carreira ](https://www.treinaweb.com.br/blog/categoria/carreira) 

     10 anos atrás

    ##  [ Quero programar: Por onde começar? ](https://www.treinaweb.com.br/blog/quero-programar-por-onde-comecar) 

     Veja os procedimentos recomendados para se tornar um programador.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2023/04/ESCOPO-CONTEXTO-JS-2-400x280.png)  [ Javascript ](https://www.treinaweb.com.br/blog/categoria/javascript) 

     4 anos atrás

    ##  [ Contexto e Escopo no JavaScript ](https://www.treinaweb.com.br/blog/contexto-e-escopo-no-javascript) 

     O que é contexto e escopo no JavaScript e o que o escopo interfere no contexto. Veremos o que é this e o que o contexto tem haver com ele

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2020/03/27144616/AWS-S3-400x280.png)  [ Amazon ](https://www.treinaweb.com.br/blog/categoria/amazon) 

     7 anos atrás

    ##  [ O que é AWS S3? ](https://www.treinaweb.com.br/blog/o-que-e-aws-s3) 

     Nesse artigo vamos conhecer o AWS S3, um serviço de armazenamento de arquivos na nuvem da Amazon. Vamos conhecer suas vantagens, suas aplicações mais comuns e quando não utilizá-lo.

     Ler artigo

## Um ano de acesso total para você viver de programação.

 Todos os cursos e formações da TreinaWeb numa única assinatura, com professores que atuam no mercado, suporte direto e certificados. Do primeiro `console.log` ao mercado de trabalho.

- **1 ano** de acesso a **todos os cursos**
- Cursos novos **toda semana**
- Suporte **direto com professores**
- Plano de carreira **personalizado**
- **Certificados digitais** inclusos
- **Aplicativos** para Android e iOS, com **acesso offline**

    **Garantia incondicional de satisfação** 

 Teste por 7 dias e, se não fizer sentido para você, devolvemos seu dinheiro.

### Acesso completo a todos os cursos e dezenas de Formações.

 12 meses 

  Economize R$ 840,00  54% OFF 

 de 12x R$ 129,00 por apenas

 12x  R$ 59,00

 sem juros no cartão de crédito ou R$ 599,00 à vista

  Oferta termina em  **22h 02min 53s**

- Acesso imediato e ilimitado durante 1 ano.
- Plano de carreira personalizado.
- Suporte direto com professores.
- E muito mais!

 [Matricule-se agora](https://www.treinaweb.com.br/checkout/pagamento/plano/anual?cupom=TW-SCLIENTE26)

     [                ](https://www.treinaweb.com.br)

 Escola online de programação, tecnologia e IA.

- [  ](https://www.facebook.com/TreinaWeb/)
- [  ](https://www.instagram.com/treinaweb/)
- [  ](https://www.youtube.com/user/TreinaWeb)
- [  ](https://twitter.com/treinaweb)
- [  ](https://www.linkedin.com/company/treinaweb)
- [  ](https://github.com/treinaweb)

## Inscreva-se em nossa newsletter

Receba lançamentos, promoções e novidades.

   Seu nome     Seu WhatsApp     Seu melhor e-mail   Inscrever-se 

## Cursos

- [ Base para Devs ](https://www.treinaweb.com.br/categoria/base-para-devs)
- [ Front-end ](https://www.treinaweb.com.br/categoria/desenvolvimento-front-end)
- [ Back-end ](https://www.treinaweb.com.br/categoria/desenvolvimento-back-end)
- [ Mobile ](https://www.treinaweb.com.br/categoria/desenvolvimento-mobile)
- [ Bancos de Dados ](https://www.treinaweb.com.br/categoria/bancos-de-dados)
- [ Cloud ](https://www.treinaweb.com.br/categoria/cloud-computing)
- [ IA ](https://www.treinaweb.com.br/categoria/ia)
- [ E mais ](https://www.treinaweb.com.br/categoria/e-mais)
- [ Ver todos os cursos ](https://www.treinaweb.com.br/cursos)

## Conteúdo

- [ Formações ](https://www.treinaweb.com.br/formacoes)
- [ Projetos práticos ](https://www.treinaweb.com.br/projetos-praticos)
- [ Direto ao ponto ](https://www.treinaweb.com.br/direto-ao-ponto)
- [ Planos ](https://www.treinaweb.com.br#assinatura)
- [ Depoimentos ](https://www.treinaweb.com.br#depoimentos)
- [ Comunidade ](https://www.treinaweb.com.br#comunidade)
- [ Corpo docente ](https://www.treinaweb.com.br#docente)

## A empresa

- [ Sobre a TreinaWeb ](https://www.treinaweb.com.br#sobre)
- [ Perguntas frequentes ](https://www.treinaweb.com.br#faq)
- [ Vantagens de estudar na TreinaWeb ](https://www.treinaweb.com.br/vantagens-de-estudar-na-treinaweb)
- [ Cursos para empresas ](https://www.treinaweb.com.br/empresas)
- [ Sugira um novo curso ](https://www.treinaweb.com.br/sugerir-curso)
- [ Trabalhe conosco ](https://www.treinaweb.com.br/trabalhe-conosco)
- [ Artigos ](https://www.treinaweb.com.br/blog)
- [ Desenvolvedores e agentes ](https://www.treinaweb.com.br/developers)
- [ Contato ](https://www.treinaweb.com.br/contato)
- [ Política de privacidade ](https://www.treinaweb.com.br/politica-de-privacidade)
- [ Termos de uso ](https://www.treinaweb.com.br/termos-de-uso)

## Baixe nosso aplicativo

 [   Disponível na **App Store**  ](https://apps.apple.com/us/app/treinaweb/id1322729447) [   Disponível no **Google Play**  ](https://play.google.com/store/apps/details?id=br.com.treinaweb.mobile) 

  Av. Paulista, 1765, Conj 71 e 72 · Bela Vista · São Paulo · SP · 01311-200   © 2004 – 2026 TreinaWeb Tecnologia LTDA · CNPJ 06.156.637/0001-58
