다음을 통해 공유


자습서: .NET CLI를 사용하여 .NET 도구 만들기

이 문서의 적용 대상: ✔️ .NET Core 2.1 SDK 이상 버전

이 자습서에서는 .NET 도구를 만들고 패키지하는 방법을 설명합니다. .NET CLI를 사용하면 콘솔 애플리케이션을 도구로 만들어 다른 사용자가 설치하고 실행할 수 있습니다. .NET 도구는 .NET CLI에서 설치되는 NuGet 패키지입니다. 도구에 대한 자세한 내용은 .NET 도구 개요를 참조하세요.

만들 도구는 메시지를 입력으로 사용하고 로봇 이미지를 만드는 텍스트 줄과 함께 메시지를 표시하는 콘솔 애플리케이션입니다.

이는 세 가지 자습서 시리즈 중 첫 번째입니다. 이 자습서에서는 도구를 만들고 패키지합니다. 다음 두 자습서에서는 도구를 전역 도구로 사용하고 도구를 로컬 도구로 사용합니다. 도구를 만드는 절차는 전역 도구 또는 로컬 도구로 사용하는지 여부와 관계없이 동일합니다.

필수 조건

  • .NET SDK 6.0.100 이상 버전

    이 자습서에서는 .NET SDK 6.0을 사용하지만 .NET Core SDK 2.1부터 전역 도구를 사용할 수 있습니다. 로컬 도구는 .NET Core SDK 3.0부터 사용할 수 있습니다.

  • 선택하는 텍스트 편집기 또는 코드 편집기입니다.

프로젝트 만들기

  1. 명령 프롬프트를 열고 repository라는 폴더를 만듭니다.

  2. repository 폴더로 이동하여 다음 명령을 입력합니다.

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

    이 명령은 repository 폴더 아래에 microsoft.botsay라는 새 폴더를 만듭니다.

    참고 항목

    이 자습서에서는 .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 파일을 열고 <PropertyGroup> 노드 끝에 다음 세 개의 새 XML 노드를 추가합니다.

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

    <ToolCommandName>은 설치 후 도구를 호출할 명령을 지정하는 선택적 요소입니다. 이 요소가 제공되지 않으면 도구의 명령 이름은 어셈블리 이름이며 일반적으로 .csproj 확장명이 없는 프로젝트 파일 이름입니다.

    <PackageOutputPath>는 NuGet 패키지가 생성될 위치를 결정하는 선택적 요소입니다. NuGet 패키지는 .NET CLI가 도구를 설치하는 데 사용됩니다.

    이제 프로젝트 파일은 다음 예제와 같습니다.

    <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. dotnet pack 명령을 실행하여 NuGet 패키지를 만듭니다.

    dotnet pack
    

    microsoft.botsay.1.0.0.nupkg 파일은 microsoft.botsay.csproj 파일의 <PackageOutputPath> 값으로 식별되는 폴더(이 예제에서는 ./nupkg 폴더)에 만들어집니다.

    공개적으로 도구를 릴리스하려면 https://www.nuget.org에 업로드할 수 있습니다. NuGet에서 도구를 사용할 수 있게 되면 개발자는 dotnet tool install 명령을 사용하여 도구를 설치할 수 있습니다. 이 자습서에서는 로컬 nupkg 폴더에서 패키지를 직접 설치하므로 NuGet에 패키지를 업로드할 필요가 없습니다.

문제 해결

자습서를 수행하는 동안 오류 메시지가 표시되는 경우 .NET 도구 사용 문제 해결을 참조하세요.

다음 단계

이 자습서에서는 콘솔 애플리케이션을 만들고 도구로 패키지했습니다. 도구를 전역 도구로 사용하는 방법을 알아보려면 다음 자습서로 이동합니다.

원한다면 전역 도구 자습서를 건너뛰고 로컬 도구 자습서로 바로 이동할 수 있습니다.