• Post author:
  • Post category:后端
  • Post comments:0评论
  • Reading time:5 mins read

业务代码敲多了免不了CtrlCV,每次开新项目的时候脚手架搭起来费时费力,经常要翻看老项目复制来复制去,那么有没有可能自己造一个类似自带的WebApi模板那样的脚手架来快速生成项目呢?答案是有的,我们可以通过dotnet创建项目模板,甚至还可以发布到nuget上供身边同事使用。

准备自己的项目模板

既然我们要造个项目脚手架模板,那么这个模板肯定要有个原型,我们需要先准备一个能够编译通过的.NetCore项目:

我这里是一个基于Furion框架自己改良的快速webapi开发脚手架,Furion这个框架没有什么多余的东西,基本就是把微软的东西再封装了一遍,提供给你方便使用,是一个国人开发的.Net5框架,用起来我个人感觉还是挺爽的,我这里整合了源码进行使用,而不是通过引用dll,因为源码更方便调试和根据自己需要进行更改。

注意记得清空解决方案,不要将编译后的dll留在模板中。

将项目模板导入到Dotnet模块库中

首先创建固定格式的原文件和文件夹,在你电脑的任何地方都可以,新建一个模板文件夹template,然后在其内部新建一个模板名称的文件夹,最后再在其内部创建一个content文件夹,然后将你的项目模板置于其中,最后文件夹目录结构如下:

之后我们需要定义模板的配置文件,也就是template.json,如上图所示,在源代码的根目录添加.template.config文件夹,然后在其内部创建template.json文件,在其内部进行模板元信息的配置:

{
  "$schema": "http://json.schemastore.org/template",//template.json 文件的 JSON 架构,可以不要该键值对
  "author": "葫芦",  //必填!模板创建者
  "classifications": [  //必填,这个对应模板的Tags,其他的比如 [ "Common", "Console" ]
    "Furion",
    "WebApi",
    "Api",
    "FreeSql"
  ],
  "name": "HuLu Api",  //必填,这个是模板名,比如ASP.NET Core Web API
  "identity": "HuLu.Template.Api",  //可选,模板的唯一名称
  "shortName": "huluapi", //必填,这个对应模板的短名称,比如webapi
  "tags": {
    "language": "C#",
    "type": "project"
  },
  "sourceName": "HuLuApi", // 可选,要替换的名字,这个就是模板的项目名,以后新建的时候,会把这个名字替换成其他,比如HuLuCustomApi(警告!这里不要写一些专用词汇,比如app呀,net呀,core之类的)
  "preferNameDirectory": true  // 可选,添加目录
}

之后就可以将模板分发到dotnet模板里了:

# 注意文件路径:content文件夹的上一级
dotnet new -i D:\Program\TPL\HuLuApi

分发后,使用dotnet new -l 查看模板列表:

卸载:

dotnet new -u D:\Program\TPL\HuLuApi

将模板打包为Nuget包

最后就是将模板发布到Nuget了,在content目录的同级目录下,添加.nuspec文件,该文件用于描述Nuget包,文件名为你的模板名称,也是下文中的Id,在nuget.org或该包所在的仓库必须是唯一的:

<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2012/06/nuspec.xsd">
  <metadata>
    <id>HuLu.Template.Api</id>
    <version>1.0.3</version>
    <description>基于 Furion 框架快速搭建 Api 多层架构模板。</description>
    <authors>葫芦</authors>
    <packageTypes>
      <packageType name="Template" />
    </packageTypes>
    <!-- <icon>icon.png</icon> -->
    <license type="expression">MulanPSL-2.0</license>
  </metadata>
  <!-- <files>
	  <file exclude="**\bin\**;**\obj\**" />
  </files> -->
</package>

当你对模板有所更改后要重新发布时,记得修改该文件的version。

之后下载Nuget.exe工具对模板进行打包,将该工具下载至.nuspec文件的同级目录下:

之后打开cmd命令行(必须是cmd不能是powershell),进入到nuget.exe所在文件夹,运行打包命令:

nuget pack D:\Program\TPL\HuLuApi\HuLu.Template.Api.nuspec

成功打包后,生成如下文件:

这个nupkg已经支持生成项目模板了,如果要发布到nuget官方仓库的话,还需要进行一些操作。

发布到Nuget官方仓库

首先你需要先到Nuget.org注册账号。

然后点击Upload:

上传你刚才生成.nupkg文件,nuget.org会告诉你包名是否可用,如果无法使用的话,改一下ID重新打包就可以了,如果包名验证通过,接下来nuget.org会打开验证部分,最后在导入文档下编辑你对该模板的说明和readme就可以了。

当所有信息准备好后,点击提交,nuget.org会开始进行病毒扫描,然后进行发布,大概等10分钟左右,你会收到一封邮件,提示你已发布成功。

发布成功后,使用dotnet new -i HuLu.Template.Api就可以使用nuget包创建新项目了。

参考:打造自己的.NET Core项目模板

葫芦

葫芦,诞生于1992年8月11日,游戏宅,胶佬,爱好摸鱼,一个干过超市收银,工地里搬过砖,当过广告印刷狗,做过电焊铁艺的现役.Net程序员。

发表回复