チュートリアル: プロジェクト テンプレートを作成する

.NET を使用すると、プロジェクト、ファイル、さらにはリソースを生成するテンプレートを作成して配置することができます。 このチュートリアルは、dotnet new コマンドで使用するテンプレートの作成、インストール、アンインストール方法を説明するシリーズのパート 2 です。

ヒント

.NET SDK に付属する公式の .NET テンプレートは、次のリポジトリにあります。

テンプレート リポジトリ
コンソール、クラス ライブラリ、共通項目テンプレート dotnet/sdk
ASP.NET と Blazor テンプレート dotnet/aspnetcore
ASP.NET 単一ページ アプリケーション テンプレート dotnet/spa-templates
WPF テンプレート dotnet/wpf
Windows フォーム テンプレート dotnet/winforms
テンプレートのテスト dotnet/test-templates
MAUI テンプレート dotnet/maui

dotnet new list コマンドを実行すると、コンピューターにインストールされているテンプレートを表示することができます。

シリーズのこのパートで学習する内容は次のとおりです。

  • プロジェクト テンプレートのリソースを作成する。
  • テンプレートの構成フォルダーとファイルを作成する。
  • ファイル パスからテンプレートをインストールする。
  • 項目テンプレートをテストする。
  • 項目テンプレートをアンインストールする。

前提条件

  • このチュートリアル シリーズのパート 1 を完了します。
  • ターミナルを開いて working\content フォルダーに移動します。

重要

この記事は、.NET 7 用に作成されています。 ただし、構文 dotnet new が異なることを除き、.NET 6 以前のバージョンにも適用できます。 listsearchinstall、および uninstall のサブコマンドが、それぞれ --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 値もあります。 これにより、テンプレートが "プロジェクト" テンプレートとして分類されます。 作成するテンプレートの種類に制限はありません。 item および project 値は、ユーザーが検索しているテンプレートの種類を簡単にフィルター処理できるように .NET で推奨されている一般的な名前です。

sourceName 項目は、ユーザーがテンプレートを使用するときに置き換えられます。 すべてのファイル名とファイル コンテンツ内で構成ファイルの sourceName 値が検索され、既定では現在のフォルダーの名前に置き換えられます。 dotnet new コマンドで -n または --name パラメータが渡された場合、現在のフォルダー名ではなく、指定された値が使用されます。 このテンプレートの場合、.csproj ファイルの名前の consoleasync が置き換えられます。

classifications 項目は、dotnet new を実行してテンプレートの一覧を取得したときに表示される tags 列を表します。 ユーザーは分類タグに基づいて検索することもできます。 template.json ファイル内の tags プロパティと、classifications の tags 一 覧を混同しないようにしてください。 これらは、残念なことに同じ名前になっていますが、2 つの異なる概念です。 template.json ファイルの完全スキーマは JSON Schema Store にあり、「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 を使用して、インストールされているテンプレート パッケージの一覧を表示できます。これにはテンプレート パッケージごとに、それをアンインストールするコマンドも含まれています。

次の手順

このチュートリアルでは、プロジェクト テンプレートを作成しました。 項目テンプレートとプロジェクト テンプレートの両方を使いやすいファイルにパッケージ化する方法については、このチュートリアル シリーズの続きを参照してください。