目录结构:
└─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
这样就可以将模板拉取到本地了。
文章评论