다음을 통해 공유


자습서: 프로젝트 템플릿 만들기

.NET을 사용하여 프로젝트, 파일, 리소스를 생성하는 템플릿을 만들고 배포할 수 있습니다. 이 자습서는 dotnet new 명령에 사용할 템플릿을 만들고, 설치하고, 제거하는 방법을 알려주는 시리즈의 2부입니다.

.NET SDK와 함께 제공되는 공식 .NET 템플릿은 다음 리포지토리에서 찾을 수 있습니다.

템플릿 리포지토리
콘솔, 클래스 라이브러리 및 공통 항목 템플릿 dotnet/sdk
ASP.NET 및 Blazor 템플릿 dotnet/aspnetcore
ASP.NET 단일 페이지 애플리케이션 템플릿 dotnet/spa-templates
WPF 템플릿 dotnet/wpf
Windows Forms 템플릿 dotnet/winforms
테스트 템플릿 dotnet/test-templates
MAUI 템플릿 dotnet/maui

dotnet new list 명령을 실행하여 컴퓨터에 설치된 템플릿을 볼 수 있습니다.

시리즈의 2부에서는 다음 방법에 대해 알아봅니다.

  • 프로젝트 템플릿의 리소스를 만듭니다.
  • 템플릿 구성 폴더 및 파일을 만듭니다.
  • 파일 경로에서 템플릿을 설치합니다.
  • 항목 템플릿을 테스트합니다.
  • 항목 템플릿을 제거합니다.

필수 조건

  • 이 자습서 시리즈의 1부를 완료합니다.
  • 터미널을 열고 working\content 폴더로 이동합니다.

Important

이 문서는 .NET 7용으로 작성되었습니다. 그러나 이는 .NET 6 및 이전 버전에도 적용되지만 한 가지 차이점이 있습니다. 즉, dotnet new 구문이 다릅니다. list, search, installuninstall 하위 명령은 각각 --list, --search, --install--uninstall 옵션이어야 합니다.

예를 들어, .NET 7의 dotnet new install 명령은 .NET 6에서는 dotnet new --install이 됩니다. 모든 옵션 및 하위 명령 목록을 보려면 dotnet new --help 명령을 사용합니다.

프로젝트 템플릿 만들기

프로젝트 템플릿은 사용자가 코드의 작업 집합을 쉽게 시작할 수 있도록 해주는 즉시 실행 가능한 프로젝트를 생성합니다. .NET에는 콘솔 애플리케이션 또는 클래스 라이브러리와 같은 몇 가지 프로젝트 템플릿이 포함되어 있습니다. 이 예에서는 표준 "Hello World" 콘솔 출력을 비동기적으로 실행되는 출력으로 바꾸는 새 콘솔 애플리케이션 프로젝트를 만듭니다.

터미널에서 working\content 폴더로 이동하여 consoleasync라는 새 하위 폴더를 만듭니다. 하위 폴더를 입력하고 dotnet new console을 실행하여 표준 콘솔 애플리케이션을 생성합니다. 이 템플릿으로 만들어진 파일을 편집하여 새 템플릿을 만듭니다.

working
└───content
    └───consoleasync
            consoleasync.csproj
            Program.cs

Program.cs 수정

program.cs 파일을 엽니다. 표준 콘솔 프로젝트는 콘솔 출력에 비동기적으로 쓰지 않으므로 이를 추가해 보겠습니다. 코드를 다음과 같이 변경하고 파일을 저장합니다.

// See https://aka.ms/new-console-template for more information
await Console.Out.WriteAsync("Hello World with C#");

템플릿의 콘텐츠를 만들었으므로 이제 템플릿의 루트 폴더에 템플릿 구성을 만들어야 합니다.

템플릿 구성 만들기

이 자습서에서 템플릿 폴더는 working\content\consoleasync에 있습니다.

템플릿은 템플릿 폴더의 루트에 특수 폴더와 구성 파일이 있기 때문에 .NET에서 인식됩니다.

먼저 .template.config라는 새 하위 폴더를 만들고 입력합니다. 그런 다음 template.json이라는 새 파일을 만듭니다. 폴더 구조는 다음과 같이 표시됩니다.

working
└───content
    └───consoleasync
        └───.template.config
                template.json

원하는 텍스트 편집기에서 template.json을 열고 다음 JSON 코드를 붙여넣고 저장합니다.

{
  "$schema": "http://json.schemastore.org/template",
  "author": "Me",
  "classifications": [ "Common", "Console" ],
  "identity": "ExampleTemplate.AsyncProject",
  "name": "Example templates: async project",
  "shortName": "consoleasync",
  "sourceName":"consoleasync",
  "tags": {
    "language": "C#",
    "type": "project"
  }
}

이 구성 파일에는 템플릿에 대한 모든 설정이 포함되어 있습니다. 기본 설정(예: nameshortName)도 확인할 수 있지만 project으로 설정된 tags/type 값도 있습니다. 그러면 템플릿이 "프로젝트" 템플릿으로 분류됩니다. 만드는 템플릿 형식에 대한 제한은 없습니다. itemproject 값은 사용자가 검색 중인 템플릿 형식을 쉽게 필터링할 수 있도록 .NET에서 권장하는 일반적인 이름입니다.

sourceName 항목은 사용자가 템플릿을 사용할 때 바뀌는 항목입니다. 구성 파일의 sourceName 값은 모든 파일 이름과 파일 콘텐츠에서 검색되며 기본적으로 현재 폴더 이름으로 바뀝니다. -n 또는 --name 매개 변수가 dotnet new 명령과 함께 전달되면 제공된 값이 현재 폴더 이름 대신 사용됩니다. 이 템플릿의 경우 .csproj 파일 이름에서 consoleasync가 바뀝니다.

classifications 항목은 dotnet new를 실행할 때 표시되고 템플릿 목록을 가져오는 태그 열을 나타냅니다. 사용자는 분류 태그를 기준으로 검색할 수도 있습니다. template.json 파일의 tags 속성을 classifications 태그 목록과 혼동하지 마세요. 불행히도 이름이 같은 두 가지 다른 개념입니다. template.json 파일의 전체 스키마는 JSON 스키마 저장소에 있으며 template.json 참조에 설명되어 있습니다. template.json 파일에 대한 자세한 내용은 dotnet 템플릿 wiki를 참조하세요.

유효한 .template.config/template.json 파일이 있으므로 이제 템플릿을 설치할 준비가 되었습니다. 템플릿을 설치하기 전에 bin 또는 obj 폴더와 같이 템플릿에 포함하지 않을 추가 폴더 및 파일을 삭제해야 합니다. 터미널에서 consoleasync 폴더로 이동하고 dotnet new install .\를 실행하여 현재 폴더에 있는 템플릿을 설치합니다. Linux 또는 macOS 운영 체제를 사용하는 경우 슬래시를 사용합니다(dotnet new install ./).

dotnet new install .\

이 명령은 사용자 템플릿을 포함하여 설치된 템플릿 목록을 출력합니다.

The following template packages will be installed:
   <root path>\working\content\consoleasync

Success: <root path>\working\content\consoleasync installed the following templates:
Templates                                         Short Name               Language          Tags
--------------------------------------------      -------------------      ------------      ----------------------
Example templates: async project                  consoleasync             [C#]              Common/Console

프로젝트 템플릿 테스트

프로젝트 템플릿을 설치했으므로 이제 템플릿을 테스트합니다.

  1. test 폴더로 이동합니다.

  2. dotnet run 명령으로 쉽게 테스트할 수 있는 작업 프로젝트를 생성하는 다음 명령을 사용하여 새 콘솔 애플리케이션을 만듭니다.

    dotnet new consoleasync -n MyProject
    

    다음과 같은 출력을 얻습니다.

    The template "Example templates: async project" was created successfully.
    
  3. 다음 명령을 사용하여 프로젝트를 실행합니다.

    dotnet run
    

    다음과 같은 출력을 얻습니다.

    Hello World with C#
    

축하합니다! .NET을 사용하여 프로젝트 템플릿을 만들고 배포했습니다. 이 자습서 시리즈의 다음 부분을 준비하기 위해 만든 템플릿을 제거합니다. 또한 test 폴더에서 모든 파일을 삭제해야 합니다. 이렇게 하면 이 자습서 시리즈의 다음 부분을 준비할 수 있는 정리 상태로 돌아갑니다.

템플릿 제거

터미널에서 consoleasync 폴더로 이동하고 다음 명령을 실행하여 현재 폴더에 있는 템플릿을 제거합니다.

  • Windows: dotnet new uninstall .\
  • Linux 또는 macOS: dotnet new uninstall ./

이 명령은 제거된 템플릿 목록을 출력합니다. 여기에는 사용자의 템플릿이 포함되어야 합니다.

Success: <root path>\working\content\consoleasync was uninstalled.

언제든지 dotnet new uninstall을 사용하여 각 템플릿 패키지를 제거하는 명령을 포함하여 설치된 템플릿 패키지 목록을 볼 수 있습니다.

다음 단계

이 자습서에서는 프로젝트 템플릿을 만들었습니다. 항목 템플릿과 프로젝트 템플릿을 모두 사용하기 쉬운 파일로 패키징하는 방법을 알아보려면 이 자습서 시리즈를 계속 진행하세요.