目录结构:
└─templates
└─consolesync
└─content
├─.template.config
├──template.json
└─AAA.Web.API
模板目录
1,随便创建一个空目录,然后在里面创建一个 ,在 templates 下创建模板目录,这个命令起名要可以随意。S 目录。

2,在 templates 下创建模板目录,这个命令起名要可以随意。这个就是模板存储的目录。

3,模板目录创建两个目录,分别是 content 和 license,license 目录可以不要,content 目录用来存储解决方案、目录等。
创建项目和模板配置
4,创建解决方案或项目,按照平时的写法就行,注意,解决方案或者项目,请使用一个固定的统一前缀,如 AAA.Web,另外最好使用两部分组合,不要使用 AAA ,要使用 }.{ ,方便区配。

5,在 content 目录下,创建 .template.config 目录,然后在 .template.config 目录ixa创建 template.json 文件。

{
"$schema": "http://json.schemastore.org/template",
"author": "Me",
"classifications": [ "Common", "Console" ],
"identity": "ExampleTemplate.AsyncProject",
"name": "Example templates: async project",
"shortName": "aaaweb",
"tags": {
"language": "C#",
"type": "project"
},
"sourceName": "AAA.Web",
"preferNameDirectory": true
}
其中, "sourceName": "AAA.Web" 是你模板中希望、可以被替换的变量,例如你设置了 AAA.Web,那么通过模板创建项目时, AAA.Web.sln 会被 替换 成新的名称。

参考 https://docs.microsoft.com/zh-cn/dotnet/core/tools/custom-templates
安装模板项目
6,然后在 templates 目录之上,执行:
dotnet new -i .\templates\consolesync\

7,创建模板 dotnet new aaaweb -n ABC.Web,可以看到,AAA.Web 都被替换为 ABC.Web 了。


参考:https://docs.microsoft.com/zh-cn/dotnet/core/tutorials/cli-templates-create-item-template
打包模板项目和推送
需要依赖 nuget.exe,可以先下载:https://www.nuget.org/downloads
然后设置环境变量。
在 content 目录下,创建一个 .nuspec 文件,内容:
<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2012/06/nuspec.xsd">
<metadata>
<id>AAA.Web</id>
<version>1.0.0</version>
<description>
我的模板
</description>
<authors>webmote</authors>
<packageTypes>
<packageType name="Template" />
</packageTypes>
</metadata>
</package>

然后执行命令:
nuget pack .\content\.nuspec
会生成一个 .nupkg 包。

然后使用 dotnet nuget 或 nuget 命令,推送 nupkg 包。 nuget.org 可以手动上传文件,私有仓库,一般只能用命令。
如果有 nupkg 文件,可以这样安装模板:
dotnet new -i xxx1.0.0.nupkg
如果是推送到仓库,可以上去查找拉取命令。本地要配置仓库源。
命令如:
dotnet new --install AAA.Web::1.0.0
这样就可以将模板拉取到本地了。
文章评论