Учебник. Создание средства .NET с помощью интерфейса командной строки .NET

Эта статья относится к следующему. ✔️ SDK для .NET Core 2.1 и более поздних версий

В этом учебнике объясняется, как создать и упаковать средство .NET. Интерфейс командной строки .NET позволяет создавать консольное приложение в качестве средства, которое смогут установить и запустить другие пользователи. Средства .NET представляют собой пакеты NuGet, которые устанавливаются из командной строки .NET. Дополнительные сведения см. в статье Обзор глобальных средств .NET.

Создаваемое средство — это консольное приложение, которое принимает сообщение в качестве входных данных и отображает сообщение вместе со строками текста, которые создают образ робота.

Это первый учебник из серии из трех частей. В этом руководстве описано, как создать и упаковать средство. В следующих двух учебниках вы будете использовать средство в качестве глобального средства и использовать средство в качестве локального средства. Процедуры создания средства одинаковы как для глобального так и локального средства.

Предварительные требования

  • Пакет SDK для .NET 6.0.100 или более поздней версии.

    В этом руководстве используется пакет SDK для .NET 6.0, однако глобальные средства доступны для любых пакетов SDK начиная с версии .NET Core 2.1. Глобальные средства доступны в пакете SDK для .NET Core, начиная с версии 3.0.

  • Текстовый редактор или редактор кода по вашему выбору.

Создание проекта

  1. Откройте командную строку и создайте папку с именем репозиторий.

  2. Перейдите в папку repository и введите следующую команду:

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

    Команда создает папку с именем microsoft.botsay в папке repository.

    Примечание

    В этом руководстве вы создадите средство, предназначенное для .NET 6.0. Чтобы выбрать другую платформу, измените параметр -f|--framework. Чтобы выбрать несколько платформ, измените элемент TargetFramework на элемент TargetFrameworks в файле проекта, как показано в следующем примере:

    <Project Sdk="Microsoft.NET.Sdk">
      <PropertyGroup>
        <OutputType>Exe</OutputType>
        <TargetFrameworks>net8.0;net6.0</TargetFrameworks>
      </PropertyGroup>
    </Project>
    
  3. Перейдите в папку microsoft.botsay.

    cd microsoft.botsay
    

Добавление кода

  1. Откройте файл Program.cs в редакторе кода.

  2. Замените код в Program.cs на следующий код:

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

    Директива using System.Reflection; необходима для кода, который вы добавите на следующем шаге.

  3. Замените этот метод Main приведенным ниже кодом, который будет обрабатывать аргументы командной строки для приложения.

    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));
    }
    

    Если аргументы не переданы, отображается короткое справочное сообщение. В противном случае все аргументы объединяются в одну строку и выводятся путем вызова метода ShowBot, созданного на следующем шаге.

  4. Добавьте новый метод с именем ShowBot, который принимает один строковый параметр. Метод выводит сообщение и образ робота, используя строки текста.

    static void ShowBot(string message)
    {
        string bot = $"\n        {message}";
        bot += @"
        __________________
                          \
                           \
                              ....
                              ....'
                               ....
                            ..........
                        .............'..'..
                     ................'..'.....
                   .......'..........'..'..'....
                  ........'..........'..'..'.....
                 .'....'..'..........'..'.......'.
                 .'..................'...   ......
                 .  ......'.........         .....
                 .    _            __        ......
                ..    #            ##        ......
               ....       .                 .......
               ......  .......          ............
                ................  ......................
                ........................'................
               ......................'..'......    .......
            .........................'..'.....       .......
         ........    ..'.............'..'....      ..........
       ..'..'...      ...............'.......      ..........
      ...'......     ...... ..........  ......         .......
     ...........   .......              ........        ......
    .......        '...'.'.              '.'.'.'         ....
    .......       .....'..               ..'.....
       ..       ..........               ..'........
              ............               ..............
             .............               '..............
            ...........'..              .'.'............
           ...............              .'.'.............
          .............'..               ..'..'...........
          ...............                 .'..............
           .........                        ..............
            .....
    ";
        Console.WriteLine(bot);
    }
    
  5. Сохраните изменения.

Тестирование приложения

Запустите проект и просмотрите выходные данные. Поработайте с разными вариантами командной строки и сравните результаты.

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

Все аргументы после разделителя -- передаются выполняемому приложению.

Упаковка средства

Прежде чем упаковать и распространять приложение в качестве средства, измените файл проекта.

  1. Откройте файл microsoft.botsay.csproj и добавьте три новых узла XML в конец узла <PropertyGroup>:

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

    <ToolCommandName> — это необязательный элемент, указывающий команду, которая будет вызывать средство после его установки. Если этот элемент не указан, имя команды для средства — это имя сборки, которое обычно является именем файла проекта без расширения CSPROJ .

    <PackageOutputPath> — это необязательный элемент, который определяет, где будет создан пакет NuGet. Пакет NuGet будет использоваться в интерфейсе командной строки .NET для установки средства.

    Файл проекта выглядит так, как показано в следующем примере.

    <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. Создайте пакет NuGet с помощью команды dotnet pack:

    dotnet pack
    

    Файл microsoft.botsay.1.0.0.nupkg создается в папке, которую указывает значение <PackageOutputPath> из файла microsoft.botsay.csproj. В нашем примере это папка ./nupkg.

    Если вы решите сделать это средство общедоступным, его можно отправить в https://www.nuget.org. Когда это средство станет доступно в NuGet, разработчикам можно будет выполнить его установку, используя команду dotnet tool install. В этом учебнике пакет устанавливается непосредственно из локальной папки nupkg, поэтому его не нужно передавать в NuGet.

Устранение неполадок

Если при выполнении учебника появляется сообщение об ошибке, см. статью Устранение неполадок при использовании средства .NET.

Следующие шаги

В этом учебнике вы создали консольное приложение и упаковали его в качестве средства. Чтобы узнать, как использовать это средство в качестве глобального, перейдите к следующему учебнику.

Tutorial: Install and use a .NET Core global tool using the .NET Core CLI (Краткое руководство. Установка и использование глобального средства .NET Core с помощью CLI .NET Core)

При желании вы можете пропустить учебник по глобальным средствам и перейти непосредственно к учебнику для локальных средств.

Tutorial: Install and use a .NET Core local tool using the .NET Core CLI (Краткое руководство. Установка и использование локального средства .NET Core с помощью CLI .NET Core)