使用 .NET,可以创建和部署生成项目、文件和资源的模板。 本教程是一系列教程的第二部分,介绍如何创建、安装和卸载模板以用于 dotnet new 命令。
小窍门
可以在以下存储库中找到随 .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 模板。
在本系列的这一部分中,你将了解如何:
- 创建项目模板的资源。
- 创建模板配置文件夹和文件。
- 从文件路径安装模板。
- 测试项目模板。
- 卸载项模板。
先决条件
创建项目模板
项目模板生成现成的项目,使用户能够轻松开始使用一组工作代码。 .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"
}
}
此配置文件包含模板的所有设置。 可以看到基本设置,例如 name 和 shortName,但也存在一个 tags/type 设置为 project的值。 这会将模板分类为“项目”模板。 对创建的模板类型没有限制。
item 和 project 值是 .NET 推荐的常用名称,这样用户可以轻松筛选他们正在搜索的模板类型。
当用户使用模板时,该项 sourceName 将被替换。 配置文件中 sourceName 的值会在搜索每个文件名和文件内容时被查找,并且在默认情况下替换为当前文件夹的名称。 当传递-n或--name参数与dotnet new命令时,将使用提供的值,而不是当前文件夹名称。 在此模板中, consoleasync 将在 .csproj 文件的名称中替换。
该classifications项表示运行dotnet new并获取模板列表时看到的标记列。 用户还可以基于分类标记进行搜索。 不要将 tags 属性与 template.json 文件中的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
测试项目模板
安装项目模板后,请对其进行测试。
导航到 测试 文件夹。
使用以下命令创建新的控制台应用程序,它生成一个工作项目,可以使用该命令轻松进行测试
dotnet run。dotnet new consoleasync -n MyProject你将获得以下输出。
The template "Example templates: async project" was created successfully.使用以下命令运行项目。
dotnet run你将获得以下输出。
Hello World with C#
祝贺! 你已使用 .NET 创建并部署了项目模板。 为准备本教程系列的下一部分,请卸载创建的模板。 请确保也从 测试 文件夹中删除所有文件。 这将帮助您回到干净的状态,为本教程系列的下一部分做好准备。
卸载模板
在终端中,导航到 consoleasync 文件夹并运行以下命令以卸载位于当前文件夹中的模板:
-
在 Windows 上:
dotnet new uninstall .\ -
在 Linux 或 macOS 上:
dotnet new uninstall ./
此命令输出卸载的模板列表,其中应包括你的模板。
Success: <root path>\working\content\consoleasync was uninstalled.
随时可以使用 dotnet new uninstall 查看已安装的模板包列表,包括每个模板包的卸载命令。
后续步骤
在本教程中,你创建了一个项目模板。 若要了解如何将项模板和项目模板打包到易于使用的文件,请继续本教程系列。