【学习笔记】三、生成自己的框架模板
作者:互联网
前言
想要批量给项目更改名字,普通的方法只能一个一个的去更改,或者去VS中批量替换,但是有的封装的方法类,引用,命名空间会出现错误,正好老张的有介绍,借鉴一下
一、准备自己的项目模板
项目模板最好不带dll文件,太占资源
二、将项目模板导入到dotnet模块库中
1、在你的电脑任何地方,新建一个模板文件夹temple,用于以后打包多个模板使用,比如我是这样的(尽量按照这个格式来:content文件夹包含code模板)
├── temple // 用来存放所有的模板 │ ├── YourTemple // 模板全部内容 │ │ ├── content // 存放Code 项目代码,可直接运行 │ │ │ ├── Hou.Core │ │ │ ├── . │ │ │ ├── . │ │ │ ├── . │ │ │ ├── Hou.Core.Services │ │ │ └── Hou.Core.sln │ │ │ │ │ ├── license // 存放版本许可信息,如果不添加,后边会警告,文章后边会提到 │ │ │ └── license.txt │ │ │ │ │ └── 其他待定 // 这里文章后边会打包的时候用到 │ │ │ └── OtherTemple // 其他模板信息
2、用于定义模板的配置文件 (template.json)
创建一个.template.config文件,和项目放在同一目录下
添加template.josn文件,里面包含作者信息,模板名称等
{ "$schema": "http://json.schemastore.org/template",//template.json 文件的 JSON 架构,可以不要该键值对 "author": "Hou", //必填!模板创建者 "classifications": [ "Web/WebAPI" ], //必填,这个对应模板的Tags,其他的比如 [ "Common", "Console" ], "name": "HouCore Dotnet", //必填,这个是模板名,比如ASP.NET Core Web API "identity": "HouCore.Template", //可选,模板的唯一名称 "shortName": "houcoretpl", //必填,这个对应模板的短名称,比如webapi "tags": { "language": "C#" , "type":"project" }, "sourceName": "HouCore", // 可选,要替换的名字,这个就是模板的项目名,以后新建的时候,会把这个名字替换成其他,比如HelloBlog(警告!这里不要写一些专用词汇,比如app呀,net呀,core之类的) "preferNameDirectory": true // 可选,添加目录 }
提示:这个模板被执行分发,添加到 dotnet 模板后,尽量保存好,不要删掉,因为如果删掉后,如果以后想卸载这个本地的模板,就不能了。
├── temple // 用来存放所有的模板 │ ├── HouCoreTemple // HouCore模板全部内容 │ │ ├── content // 存放Code 项目代码,可直接运行 │ │ │ ├── .template.config // 模板配置文件夹 │ │ │ │ └── template.json // 配置文件 │ │ │ ├── Hou.Core │ │ │ ├── . │ │ │ ├── . │ │ │ ├── . │ │ │ ├── Hou.Core.Services │ │ │ └── Hou.Core.sln │ │ │ │ │ ├── license // 存放版本许可信息,如果不添加,后边会警告,文章后边会提到 │ │ │ └── license.txt │ │ │ │ │ └── 其他待定 // 这里文章后边会打包的时候用到 │ │ │ └── OtherTemple // 其他模板信息
3、使用文件系统分发
把代码导入到 dotnet 模板里
// 使用文件分发模板, // 注意文件路径:content文件夹的上一级,可以对比上边的截图中的文件夹结构 dotnet new -i D:\myTpl\temple\HouCoreTemple
与此对应的,就是卸载了,注意刚刚的那个文件地址不要删了(就是把新建的字母 i 变成了 u):
dotnet new -u D:\myTpl\temple\HouCoreTemple
4、使用dotnet新模板创建一个项目
随便找一个文件夹,创建新的模板
1 dotnet new houcoretpl -h // 查看模板信息帮助指令 2 3 dotnet new houcoretpl -n houziAdmin// 创建模板,-n后面的是所要创建的项目名称
上面操作只是在本机上创建一个模板框架,如果更换电脑就会找不到了,所以我们需要发到线上去,以便于以后使用
三、发布项目到Nuget
1、添加nuspec范本文件
├── temple // 用来存放所有的模板 │ ├── HouCoreTemple // HouCore模板全部内容 │ │ ├── content // 存放Code 项目代码,可直接运行 │ │ │ ├── .template.config // 模板配置文件夹 │ │ │ │ └── template.json // 配置文件 │ │ │ ├── Hou.Core │ │ │ ├── . │ │ │ ├── . │ │ │ ├── . │ │ │ ├── Hou.Core.Services │ │ │ └── Hou.Core.sln │ │ │ │ │ ├── license // 存放版本许可信息,如果不添加,后边会警告,文章后边会提到 │ │ │ └── license.txt │ │ │ │ │ ├── Hou.Core.Webapi.Template.nuspec │ │ │ │ │ └── 其他待定 // 这里文章后边会打包的时候用到 │ │ │ └── OtherTemple // 其他模板信息
文件里面内容
<?xml version="1.0" encoding="utf-8"?> <package xmlns="http://schemas.microsoft.com/packaging/2012/06/nuspec.xsd"> <metadata> <id>Hou.Core.Webapi.Template</id>// nuget包标识,在 nuget.org 或包驻留的任意库中必须是唯一的 <version>1.0.0</version>// 遵循 major.minor.patch 模式的包版本。 <description> Creates a blog core webapi app.// 用于 UI 显示的包的详细说明。 </description> <authors>Hou</authors>// 包创建者的逗号分隔列表,与 nuget.org 上的配置文件名称一致 <packageTypes> <packageType name="Template" />// 包类型 </packageTypes> <license type="file">license\license.txt</license>// 上文提到的许可证信息 </metadata> </package>
注意:因为规范要求只识别英语,所以在创建的时候,需要把注释的汉语给删除
2、下载Nuget.exe
nuget.exe 工具了:https://www.nuget.org/downloads
exe放在和nuspec同级的目录下
├── temple // 用来存放所有的模板 │ ├── HouCoreTemple // HouCore模板全部内容 │ │ ├── content // 存放Code 项目代码,可直接运行 │ │ │ ├── .template.config // 模板配置文件夹 │ │ │ │ └── template.json // 配置文件 │ │ │ ├── Hou.Core │ │ │ ├── . │ │ │ ├── . │ │ │ ├── . │ │ │ ├── Hou.Core.Services │ │ │ └── Hou.Core.sln │ │ │ │ │ ├── license // 存放版本许可信息,如果不添加,后边会警告,文章后边会提到 │ │ │ └── license.txt │ │ │ │ │ ├── Hou.Core.Webapi.Template.nuspec // nuget 打包的范本配置文件 │ │ │ │ │ ├── nuget.exe // nuget.exe 可执行文件 │ │ │ │ │ └── 其他待定 // 这里文章后边会打包的时候用到 │ │ │ └── OtherTemple // 其他模板信息
3、生成Nuget包
打开DOS命令,进入当前文件夹
// 执行打包操作,文件地址就是 nuspec 范本地址
nuget pack D:\temple\BlogCoreTemple\Hou.Core.Webapi.Template.nuspec
注意:这里有小伙伴提示错误nuget 命令行无效 ,你需要在nuget.exe 目录里操作,并且是 CMD 命令窗口
4、发布nuget.org
首先你需要在 nuget.org 官网注册账号,上传页面:https://www.nuget.org/packages/manage/upload
1、选择 nuget.org 顶部菜单中的“上传”,并浏览到包位置nuget.org
2、告知包名称是否可用。 如果无法使用,则更改项目中的包标识符、重新生成,并重试上传。
3、如果包名称可用,nuget.org 将打开“验证”部分,可以在其中查看包清单中的元数据。 若要更改任何元数据,请编辑项目(项目文件或 .nuspec
文件)、重新生成、重新创建包,然后再次上传。
4、在“导入文档”下,可以粘贴 Markdown、将 URL 指向文档,或上传文档文件。
5、当所有信息准备就绪后,选择“提交”按钮
大概需要审核几分钟,上传成功后,会收到官方的文件,提示发布成功。
四、Nuget包导入到dotnet模板,并创建新工程
1、使用nuget.org的包ID进行分发
// 通过nuget.org ID 导入分发,这个名称,就是我们之前在 nuspec 范本文件中,配置的nuget包 ID dotnet new --install HouCore.Webapi.Template::1.0.0
2、直接使用nupkg包来导入
首先下载下来nupkg包,然后执行命令
// 将nupkg 包分发 dotnet new -i D:\temple\Hou.Core.Webapi.Template.1.0.0.nupkg
3、卸载模板
// 从 nuget.org 中存储的 NuGet 包卸载模板 dotnet new -u Hou.Core.Webapi.Template
结语
可能有些地方表述的不是很清楚,具体的可以看老张的原文
https://www.cnblogs.com/laozhang-is-phi/p/10205495.html#autoid-1-0-0
标签:Core,框架,笔记,nuget,Hou,dotnet,org,模板 来源: https://www.cnblogs.com/houshanwen/p/16106594.html