Compartilhar via


Tutorial: Criar uma ferramenta .NET usando a CLI do .NET

Este artigo se aplica a: ✔️ SDK do .NET Core 2.1 e versões posteriores

Este tutorial ensina como criar e empacotar uma ferramenta .NET. A CLI do .NET permite que você crie um aplicativo de console como uma ferramenta, que outras pessoas podem instalar e executar. As ferramentas do .NET são pacotes NuGet instalados da CLI do .NET. Para obter mais informações sobre ferramentas, consulte a visão geral das ferramentas do .NET.

A ferramenta que você criará é um aplicativo de console que usa uma mensagem como entrada e exibe a mensagem junto com linhas de texto que criam a imagem de um robô.

Este é o primeiro de uma série de três tutoriais. Neste tutorial, você cria e empacota uma ferramenta. Nos próximos dois tutoriais, você usará a ferramenta como uma ferramenta global e usará a ferramenta como uma ferramenta local. Os procedimentos para criar uma ferramenta são os mesmos se você usá-la como uma ferramenta global ou como uma ferramenta local.

Pré-requisitos

  • SDK do .NET 6.0.100 ou uma versão posterior.

    Este tutorial usa o SDK do .NET 6.0, mas as ferramentas globais estão disponíveis a partir do SDK do .NET Core 2.1. As ferramentas locais estão disponíveis a partir do SDK do .NET Core 3.0.

  • Um editor de texto ou editor de código de sua escolha.

Criar um projeto

  1. Abra um prompt de comando e crie uma pasta chamada repositório.

  2. Navegue até a pasta do repositório e insira o seguinte comando:

    dotnet new console -n microsoft.botsay -f net6.0
    

    O comando cria uma nova pasta chamada microsoft.botsay na pasta do repositório .

    Observação

    Para este tutorial, você cria uma ferramenta direcionada ao .NET 6.0. Para direcionar uma estrutura diferente, altere a opção -f|--framework . Para direcionar várias estruturas, altere o TargetFramework elemento para um TargetFrameworks elemento no arquivo de projeto, conforme mostrado no exemplo a seguir:

    <Project Sdk="Microsoft.NET.Sdk">
      <PropertyGroup>
        <OutputType>Exe</OutputType>
        <TargetFrameworks>net8.0;net6.0</TargetFrameworks>
      </PropertyGroup>
    </Project>
    
  3. Navegue até a pasta microsoft.botsay .

    cd microsoft.botsay
    

Adicionar o código

  1. Abra o arquivo Program.cs com o editor de código.

  2. Substitua o código em Program.cs pelo seguinte código:

    using System.Reflection;
    
    namespace microsoft.botsay;
    
    internal class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");
        }
    }
    

    A using System.Reflection; diretiva é necessária para o código que você adicionará na próxima etapa.

  3. Substitua o Main método pelo código a seguir para processar os argumentos de linha de comando do aplicativo.

    static void Main(string[] args)
    {
        if (args.Length == 0)
        {
            var versionString = Assembly.GetEntryAssembly()?
                                    .GetCustomAttribute<AssemblyInformationalVersionAttribute>()?
                                    .InformationalVersion
                                    .ToString();
    
            Console.WriteLine($"botsay v{versionString}");
            Console.WriteLine("-------------");
            Console.WriteLine("\nUsage:");
            Console.WriteLine("  botsay <message>");
            return;
        }
    
        ShowBot(string.Join(' ', args));
    }
    

    Se nenhum argumento for passado, uma breve mensagem de ajuda será exibida. Caso contrário, todos os argumentos são concatenados em uma única string e impressos ao chamar o método ShowBot que você cria na próxima etapa.

  4. Adicione um novo método chamado ShowBot que usa um parâmetro de cadeia de caracteres. O método imprime a mensagem e uma imagem de um robô usando linhas de texto.

    static void ShowBot(string message)
    {
        string bot = $"\n        {message}";
        bot += @"
        __________________
                          \
                           \
                              ....
                              ....'
                               ....
                            ..........
                        .............'..'..
                     ................'..'.....
                   .......'..........'..'..'....
                  ........'..........'..'..'.....
                 .'....'..'..........'..'.......'.
                 .'..................'...   ......
                 .  ......'.........         .....
                 .    _            __        ......
                ..    #            ##        ......
               ....       .                 .......
               ......  .......          ............
                ................  ......................
                ........................'................
               ......................'..'......    .......
            .........................'..'.....       .......
         ........    ..'.............'..'....      ..........
       ..'..'...      ...............'.......      ..........
      ...'......     ...... ..........  ......         .......
     ...........   .......              ........        ......
    .......        '...'.'.              '.'.'.'         ....
    .......       .....'..               ..'.....
       ..       ..........               ..'........
              ............               ..............
             .............               '..............
            ...........'..              .'.'............
           ...............              .'.'.............
          .............'..               ..'..'...........
          ...............                 .'..............
           .........                        ..............
            .....
    ";
        Console.WriteLine(bot);
    }
    
  5. Salve suas alterações.

Testar o aplicativo

Execute o projeto e veja a saída. Experimente estas variações na linha de comando para ver resultados diferentes:

dotnet run
dotnet run -- "Hello from the bot"
dotnet run -- Hello from the bot

Todos os argumentos após o -- delimitador são passados para seu aplicativo.

Empacotar a ferramenta

Antes de empacotar e distribuir o aplicativo como uma ferramenta, você precisa modificar o arquivo de projeto.

  1. Abra o arquivo microsoft.botsay.csproj e adicione três novos nós XML ao final do nó <PropertyGroup>.

    <PackAsTool>true</PackAsTool>
    <ToolCommandName>botsay</ToolCommandName>
    <PackageOutputPath>./nupkg</PackageOutputPath>
    

    <ToolCommandName> é um elemento opcional que especifica o comando que invocará a ferramenta depois de instalada. Se esse elemento não for fornecido, o nome do comando da ferramenta será o nome do assembly, que normalmente é o nome do arquivo de projeto sem a extensão .csproj .

    Observação

    Escolha um valor exclusivo para <ToolCommandName>. Evite usar extensões de arquivo (como .exe ou .cmd) porque a ferramenta está instalada como um host de aplicativo e o comando não deve incluir uma extensão. Isso ajuda a evitar conflitos com os comandos existentes e garante uma experiência de instalação tranquila.

    <PackageOutputPath> é um elemento opcional que determina onde o pacote NuGet será produzido. O pacote NuGet é o que a CLI do .NET usa para instalar sua ferramenta.

    O arquivo de projeto agora se parece com o seguinte exemplo:

    <Project Sdk="Microsoft.NET.Sdk">
    
      <PropertyGroup>
    
        <OutputType>Exe</OutputType>
        <TargetFramework>net6.0</TargetFramework>
    
        <PackAsTool>true</PackAsTool>
        <ToolCommandName>botsay</ToolCommandName>
        <PackageOutputPath>./nupkg</PackageOutputPath>
    
      </PropertyGroup>
    
    </Project>
    
  2. Crie um pacote NuGet executando o comando dotnet pack :

    dotnet pack
    

    O arquivo microsoft.botsay.1.0.0.nupkg é criado na pasta identificada pelo <PackageOutputPath> valor do arquivo microsoft.botsay.csproj , que neste exemplo é a pasta ./nupkg .

    Quando você quiser lançar uma ferramenta publicamente, poderá carregá-la para https://www.nuget.org. Depois que a ferramenta estiver disponível no NuGet, os desenvolvedores poderão instalar a ferramenta usando o comando de instalação da ferramenta dotnet . Para este tutorial, instale o pacote diretamente da pasta nupkg local, portanto, não é necessário carregar o pacote no NuGet.

Solucionar problemas

Se você receber uma mensagem de erro ao seguir o tutorial, confira Solucionar problemas de uso da ferramenta .NET.

Próximas etapas

Neste tutorial, você criou um aplicativo de console e o empacotou como uma ferramenta. Para saber como usar a ferramenta como uma ferramenta global, avance para o próximo tutorial.

Se preferir, ignore o tutorial de ferramentas globais e vá diretamente para o tutorial de ferramentas locais.

Consulte também