管理 .NET 项目和项模板

.NET 提供了一个模板系统,允许用户从 NuGet、NuGet 包文件或文件系统目录中安装或卸载包含模板的包。 本文介绍如何通过 .NET SDK CLI 管理 .NET 模板。

若要详细了解如何创建模板,请参阅教程:创建模板

安装模板

模板包通过 dotnet new install SDK 命令进行安装。 可以提供模板包的 NuGet 包标识符或包含模板文件的文件夹。

NuGet 托管包

.NET CLI 模板包上传到 NuGet 以便进行广泛分发。 还可以从专用源安装模板包。 如本地 NuGet 包部分所述,可以分发和手动安装 nupkg 模板文件,而不是将模板包上传到 NuGet 源。

有关配置 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} 命令直接从文件夹安装模板。 指定的文件夹被视为找到的任何模板的模板包标识符。 安装指定文件夹的层次结构中找到的任何模板。

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

在命令中指定的 {folder-path} 将成为找到的所有模板的模板包标识符。 如列出模板包部分中指定的一样,可以使用 dotnet new uninstall 命令获取已安装的模板包列表。 在此示例中,模板包标识符显示为用于安装的文件夹:

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 包标识符或包含模板文件的文件夹。

NuGet 包

安装 NuGet 模板包后,无论包是从 NuGet 源还是从 nupkg 文件安装的,都可以通过引用 NuGet 包标识符将其卸载。

若要卸载模板包,请使用 dotnet new uninstall {package-id} 命令:

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

Folder

如果通过文件夹路径安装模板,文件夹路径将成为模板包标识符。

若要卸载模板包,请使用 dotnet new uninstall {package-folder-path} 命令:

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

列出模板包

通过使用不带包标识符的标准卸载命令,可以查看已安装模板包的列表以及用于卸载每个模板包的命令。

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 的模板。 但是,如果从更高版本的 SDK(如 7.0)开始,则只包含此版本的模板。 不包含任何其他版本的模板。

NuGet 上提供了 .NET 模板,你可以像安装任何其他模板一样安装它们。 有关详细信息,请参阅安装 NuGet 托管包

SDK NuGet 包标识符
.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
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

例如,.NET 7 SDK 包含面向 .NET 7 的控制台应用模板。 如果要面向 .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
    

    应该会看到一条消息,指示项目已创建。

“控制台应用程序”模板已成功创建。

正在处理创建后操作…正在 path-to-project-file.csproj 上运行“dotnet restore”…正在确定要还原的项目…path-to-project-file.csproj 的还原完成时间为 1.05 秒。

还原成功。

请参阅