文章起源来自一篇博客:使用 .NET CORE 创建 项目模板,模板项目,Template - DeepThought - 博客园
之前使用Abp的时候就很认同Abp创建模板项目的方式。想不到.Net Core出了更赞的方式创建模板。之前写过一个系列文章,有不少对Abp框架的改动(见文章:基于.NetCore和ABP框架如何让Windows服务执行Quartz定时作业 - repeatedly - 博客园),如果将其加入自定义模板,应该是一个不错的想法。
系统必备
.NET Core 2.2 SDK 或更高版本。
搭建模板项目
因为是对现有的项目改造,将其作为模板进行改造,所以就直接在原有的项目上处理。私以为实际项目使用的话,可以创建一个目录名为AbpWindowsServiceTemplate,然后将项目拷贝进去。不多废话了。
建立文件夹,名为
.template.config
在该文件下,创建文件
template.json
打开文件,模板配置内容如下
{"$schema": "http://json.schemastore.org/template","author": "TemplateAuthor","classifications": [ "Console","WebApi" ],"name": "MyJobTemplate","identity": "MyJobTemplate","groupIdentity": "MyJobTemplate","shortName": "JT","tags": {"language": "C#","type": "project"},"sourceName": "MyJob","preferNameDirectory": true
}
保存配置之后,这就算搭建成功。当然这是搭建一个项目的最基本配置,详细配置参考请查阅 json.schemastore.org/template
基础配置说明
$schema:template.json 文件的 JSON 架构。默认值使用
http://json.schemastore.org/template
。author:模板作者
classifications:模板特征标识。上文举例的配置是因为我自定义的模板包括了console和webapi。
identity:此模板的唯一名称
name:用户看到的模板名称
shortName:短名称。当使用CLI命令创建模板项目时,使用短名称将利于使用。
sourceName:模板替换的关键文本,使用时需要注意,要选择合适的替换文本,不然容易误伤代码。
如何使用
本地安装模板
在文件夹.template.config
所在目录执行命令
dotnet new -i .
上面的命令使用的是相对路径进行安装,还可以使用绝对路径安装。先卸载再尝试一下绝对路径安装。
卸载模板
执行卸载命令
dotnet new -u
执行之后可以看到罗列处理的所有已经安装的模板,以及相应的卸载命令。找到需要卸载的模板,类似下文。
D:\GitHub\DotNetCore_Practice\ABP.WindowsServiceTemplates:MyJobTemplate (JT) C#Uninstall Command:dotnet new -u D:\GitHub\DotNetCore_Practice\ABP.WindowsService
执行卸载命令
dotnet new -u D:\GitHub\DotNetCore_Practice\ABP.WindowsService
结果如下,卸载成功,可以通过命令dotnet new -l
查看是否卸载成功
PS D:\TestTemplate> dotnet new -u D:\GitHub\DotNetCore_Practice\ABP.WindowsService\Demo.MyJob
PS D:\TestTemplate>
绝对路径安装
卸载模板之后,尝试绝对路径安装模板。尝试如下,安装成功
PS D:\TestTemplate> dotnet new -i D:\GitHub\DotNetCore_Practice\ABP.WindowsService\Demo.MyJob
命令生成项目
JT是模板配置文件中指定的shortName。MyJob
替换为Test
,因为配置中sourceName是MyJob
,可按需配置。D:\TestTemplate
。
参考
使用 .NET CORE 创建 项目模板,模板项目,Template - DeepThought - 博客园
Home · dotnet/templating Wiki
dotnet new 自定义模板 - .NET Core CLI | Microsoft Docs
创建 dotnet new 项目模板 - .NET Core | Microsoft Docs
dotnet/dotnet-template-samples: Samples showing how to create templates using the Template Engine for dotnet new and Visual Studio
dotnet new 命令 - .NET Core CLI | Microsoft Docs