.NET のプロジェクトと項目のテンプレートを管理する

.NET には、ユーザーが NuGet、NuGet パッケージ ファイル、またはファイル システム ディレクトリからテンプレートを含むパッケージをインストールまたはアンインストールできるテンプレート システムが用意されています。 この記事では、.NET SDK CLI を使用して .NET テンプレートを管理する方法について説明します。

テンプレートの作成方法については、「チュートリアル: テンプレートを作成する」を参照してください。

テンプレートのインストール

テンプレート パッケージは、dotnet new install SDK コマンドを使ってインストールします。 テンプレート パッケージの NuGet パッケージ ID、またはテンプレート ファイルが含まれるフォルダーを指定できます。

NuGet でホストされるパッケージ

.NET CLI テンプレート パッケージは、広範囲に配布するために NuGet にアップロードされます。 テンプレート パッケージはプライベート フィードからインストールすることもできます。 テンプレート パッケージを NuGet フィードにアップロードする代わりに、「ローカル NuGet パッケージ」セクションで説明されているように、nupkg テンプレート ファイルを配布して手動でインストールすることもできます。

NuGet フィード構成の詳細については、「dotnet nuget add source」を参照してください。

既定の NuGet フィードからテンプレート パッケージをインストールするには、dotnet new install {package-id} コマンドを使います。

dotnet new install Microsoft.DotNet.Web.Spa.ProjectTemplates

特定のバージョンの既定の NuGet フィードからテンプレート パッケージをインストールするには、dotnet new install {package-id}::{version} コマンドを使います。

dotnet new install Microsoft.DotNet.Web.Spa.ProjectTemplates::2.2.6

ローカル NuGet パッケージ

テンプレート パッケージが作成されると、nupkg ファイルが生成されます。 nupkg ファイルにテンプレートが含まれる場合、dotnet new install {path-to-package} コマンドでそれをインストールできます。

dotnet new install c:\code\nuget-packages\Some.Templates.1.0.0.nupkg
dotnet new install ~/code/nuget-packages/Some.Templates.1.0.0.nupkg

フォルダー

nupkg ファイルからテンプレートをインストールする代わりに、dotnet new install {folder-path} コマンドで直接、フォルダーからテンプレートをインストールすることもできます。 指定されたフォルダーは、見つかったテンプレートのテンプレート パッケージ ID として扱われます。 指定されたフォルダーの階層で見つかったテンプレートはすべてインストールされます。

dotnet new install c:\code\nuget-packages\some-folder\
dotnet new install ~/code/nuget-packages/some-folder/

コマンドで指定された {folder-path} は、見つかったすべてのコマンドのテンプレート パッケージ ID になります。 「テンプレート パッケージの一覧を表示する」セクションで説明されているように、dotnet new uninstall コマンドを使ってインストールされているテンプレートの一覧を取得できます。 この例では、テンプレート パッケージ ID がインストールに使用されるフォルダーとして示されています。

dotnet new uninstall
Currently installed items:

... cut to save space ...

  c:\code\nuget-packages\some-folder
    Templates:
      A Template Console Class (templateconsole) C#
      Project for some technology (contosoproject) C#
    Uninstall Command:
      dotnet new uninstall c:\code\nuget-packages\some-folder
dotnet new uninstall
Currently installed items:

... cut to save space ...

  /home/username/code/templates
    Templates:
      A Template Console Class (templateconsole) C#
      Project for some technology (contosoproject) C#
    Uninstall Command:
      dotnet new uninstall /home/username/code/templates

テンプレート パッケージをアンインストールする

テンプレート パッケージは、dotnet new uninstall SDK コマンドを使ってアンインストールします。 テンプレート パッケージの NuGet パッケージ ID、またはテンプレート ファイルが含まれるフォルダーを指定できます。

NuGet パッケージ

NuGet フィードまたは nupkg ファイルから NuGet テンプレート パッケージをインストールした後は、NuGet パッケージ ID を参照することでそれをアンインストールできます。

テンプレート パッケージをアンインストールするには、dotnet new uninstall {package-id} コマンドを使います。

dotnet new uninstall Microsoft.DotNet.Web.Spa.ProjectTemplates

フォルダー

テンプレートがフォルダー パスからインストールされると、そのフォルダー パスがテンプレート パッケージ ID になります。

テンプレート パッケージをアンインストールするには、dotnet new uninstall {package-folder-path} コマンドを使います。

dotnet new uninstall c:\code\nuget-packages\some-folder
dotnet new uninstall /home/username/code/templates

テンプレート パッケージの一覧を表示する

パッケージ ID を指定しないで標準のアンインストール コマンドを使うことで、インストールされているテンプレート パッケージの一覧と、各テンプレート パッケージをアンインストールするコマンドを表示できます。

dotnet new uninstall
Currently installed items:

... cut to save space ...

  c:\code\nuget-packages\some-folder
    Templates:
      A Template Console Class (templateconsole) C#
      Project for some technology (contosoproject) C#
    Uninstall Command:
      dotnet new uninstall c:\code\nuget-packages\some-folder

他の SDK からテンプレート パッケージをインストールする

SDK の各バージョンを順番にインストールしている場合 (たとえば、SDK 6.0 をインストールしてから SDK 7.0 をインストールした場合)、すべての SDK のテンプレートがインストールされています。 一方、7.0 などの新しい SDK バージョンから始めた場合は、このバージョンのテンプレートのみが含まれます。 その他のリリースのテンプレートは含まれていません。

.NET テンプレートは NuGet で入手でき、他のテンプレートと同じようにインストールできます。 詳細については、「NuGet でホストされているパッケージをインストールする」を参照してください。

SDK NuGet パッケージ ID
.NET Core 2.1 Microsoft.DotNet.Common.ProjectTemplates.2.1
.NET Core 2.2 Microsoft.DotNet.Common.ProjectTemplates.2.2
.NET Core 3.0 Microsoft.DotNet.Common.ProjectTemplates.3.0
.NET Core 3.1 Microsoft.DotNet.Common.ProjectTemplates.3.1
.NET 5.0 Microsoft.DotNet.Common.ProjectTemplates.5.0
.NET 6.0 Microsoft.DotNet.Common.ProjectTemplates.6.0
.NET 7.0 Microsoft.DotNet.Common.ProjectTemplates.7.0
.NET 8.0 Microsoft.DotNet.Common.ProjectTemplates.8.0
ASP.NET Core 2.1 Microsoft.DotNet.Web.ProjectTemplates.2.1
ASP.NET Core 2.2 Microsoft.DotNet.Web.ProjectTemplates.2.2
ASP.NET Core 3.0 Microsoft.DotNet.Web.ProjectTemplates.3.0
ASP.NET Core 3.1 Microsoft.DotNet.Web.ProjectTemplates.3.1
ASP.NET Core 5.0 Microsoft.DotNet.Web.ProjectTemplates.5.0
ASP.NET Core 6.0 Microsoft.DotNet.Web.ProjectTemplates.6.0
ASP.NET Core 7.0 Microsoft.DotNet.Web.ProjectTemplates.7.0
ASP.NET Core 8.0 Microsoft.DotNet.Web.ProjectTemplates.8.0

たとえば、.NET 8 SDK には、.NET 8 を対象とするコンソール アプリ用のテンプレートが含まれます。 .NET Core 3.1 を対象にする場合は、3.1 のテンプレート パッケージをインストールする必要があります。

  1. .NET Core 3.1 を対象とするアプリを作成してみてください。

    dotnet new console --framework netcoreapp3.1
    

    エラー メッセージが表示された場合、テンプレートをインストールする必要があります。

  2. .NET Core 3.1 プロジェクト テンプレートをインストールします。

    dotnet new install Microsoft.DotNet.Common.ProjectTemplates.3.1
    
  3. アプリをもう一度作成してみてください。

    dotnet new console --framework netcoreapp3.1
    

    プロジェクトが作成されたことを示すメッセージが表示されるはずです。

    The template "Console Application" was created successfully.
    
    Processing post-creation actions...
    Running 'dotnet restore' on path-to-project-file.csproj...
      Determining projects to restore...
      Restore completed in 1.05 sec for path-to-project-file.csproj.
    
    Restore succeeded.
    

関連項目