.Net Core3.0 WebApi 项目框架搭建 十二:创建项目模板上传到Nuget

使用场景

自己经过多年开发的沉淀后,开发出一个属于自己的一套Demo项目,亦或是借鉴别人的项目后,优化了一个,然后我们在别的地方使用的时候(可能是下一个公司),如果还想用自己的模板,也可能是供新入职的同事使用,经常会是以下几个办法

 

1、对比着之前的项目结构,在VistulStudio中手动创建一个空的解决方案,从零开始,一点一点搭建。// 麻烦之大,可想而知

2、通过dotnet cli 命令来创建空项目,然后手动。// 会简化一丢丢,但仍需要一层一层的创建类库;

3、把Demo工程代码里拷贝到U盘,或者上传到云盘,然后下载下来,改吧改吧。// 寻找过程很麻烦,依赖代码承载工具;

4、把Demo工程代码 Pull 到 Github 上,在别的地方直接 Clone ,然后改吧改吧。 // 开源出源码,私密性不强;

 

 大家可以看到,上边的这几个办法,都会有这样或那样的问题,快的不方便,方便的太局限。而且上边的这些都有一个通病,不知道大家是否发现:就是不能快速修改工程名称!举个栗子,我的这个 Github 上的项目,大家下载下来,怎么快速把 Webapi.Core 改成 xxx.xxx 呢?

准备Demo项目模板

准备一个整理好的Demo模板,下面是我的模板地址

https://github.com/huguodong/Webapi.Template

将 Demo 模板导入到dotnet模块库中

在你的电脑任何地方,新建一个模板文件夹temple,用于以后打包多个模板使用:

├── temple                               //  用来存放所有的模板
│   ├── WebapiCoreTemple                   //  WebapiCore模板全部内容
│   │    ├── content                     //  存放Code 项目代码,可直接运行
│   │    │    ├── Webapi.Core          
│   │    │    ├──  .          
│   │    │    ├──  .          
│   │    │    ├──  .          
│   │    │    ├── Webapi.Core.Services      
│   │    │    └── Webapi.Core.sln     
│   │    │ 
│   │    ├── license                     //  存放版本许可信息,如果不添加,后边会警告,文章后边会提到
│   │    │    └── license.txt          
│   │    │ 
│   │    └── 其他待定                     //  这里文章后边会打包的时候用到
│   │

接下来咱们定义配置文件:

  1. 向源代码项目的根目录添加 .template.config 文件夹(注意是文件夹),到时候与它同级的文件都会被打包。
  2. 在 .template.config 文件夹中,创建 template.json 文件来配置模板。
{
    "$schema": "http://json.schemastore.org/template",//template.json 文件的 JSON 架构,可以不要该键值对
    "author": "huguodong", //必填!模板创建者
    "classifications": [ "Web/WebAPI" ], //必填,这个对应模板的Tags,其他的比如 [ "Common", "Console" ],
    "name": "Core.Webapi.Template", //必填,这个是模板名,比如ASP.NET Core Web API
    "identity": "Core.Webapi.Template.HGD", //可选,模板的唯一名称
    "shortName": "corewebapi", //必填,这个对应模板的短名称,比如webapi
    "tags": {
      "language": "C#" ,
      "type":"project"
    },
    "sourceName": "Webapi.Core",  // 可选,要替换的名字,这个就是模板的项目名,以后新建的时候,会把这个名字替换成其他,比如HelloBlog(警告!这里不要写一些专用词汇,比如app呀,net呀,core之类的)
    "preferNameDirectory": true  // 可选,添加目录  
}

经过上面两步的处理,咱们已经把模板源代码准备好了,并且也按照固定的规则,把配置文件配置好了.接下来就是把代码导入到 dotnet 模板里。

代码DOS命令窗口,输入命令:

// 使用文件分发模板,
// 注意文件路径:content文件夹的上一级,可以对比上边的截图中的文件夹结构
dotnet new -i F:\temple\WebapiTemple

卸载命令:

dotnet new -u F:\temple\WebapiTemple

使用dotnet新模板创建一个项目

随便找一个文件夹,然后执行我们的操作:

F:\test>dotnet new corewebapi -n New.Core

 自动根据Demo帮我们创建好了项目,而且项目名也改了

打包项目成Nupkg包

在 content 文件夹旁边,添加 nuspec 文件。 nuspec 文件是 XML 清单文件,用于描述包内容,并促进创建 NuGet 包。

下边范本文件中的汉字只是我的解释说明,如果你自己做,请千万要去掉,不能带中文字符!

<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2012/06/nuspec.xsd">
  <metadata>
    <id>Webapi.Core.Template.HGD</id>// nuget包标识,在 nuget.org 或包驻留的任意库中必须是唯一的
    <version>1.0.0</version>// 遵循 major.minor.patch 模式的包版本。
    <description>
      Creates a core webapi app.// 用于 UI 显示的包的详细说明。
    </description>
    <authors>huguodong</authors>// 包创建者的逗号分隔列表,与 nuget.org 上的配置文件名称一致
    <packageTypes>
      <packageType name="Template" />// 包类型
    </packageTypes>
    <license type="file">license\license.txt</license>// 上文提到的许可证信息
  </metadata>
</package>

下载Nuget.exe:https://www.nuget.org/downloads 把下载好的 nuget.exe 拷贝到 nuspec  范本文件同级的目录中:

打开 DOS 命令窗口,进入到当前文件夹,然后直接运行打包命令:

// 执行打包操作,文件地址就是 nuspec 范本地址
nuget pack Webapi.Core.Template.HGD.nuspec

本地测试

然后执行命令:

// 将nupkg 包分发
dotnet new -i  F:\temple\WebapiTemple\Webapi.Core.Template.HGD.nuspec

如果能够成功安装表示打包成功

发布包到 Nuget

首先你需要在 nuget.org 官网注册账号,这里不细说,然后点击到上传页面:https://www.nuget.org/packages/manage/upload,点击“browse”

nuget.org 会告知包名称是否可用。 如果无法使用,则更改项目中的包标识符、重新生成,并重试上传。

 

 

 当所有信息准备就绪后,选择“提交”按钮

 

 

 

  上传成功后,nuget 会后台进行扫描病毒,然后进行发布,中间大概等待10分钟后,你会收到一个官方的邮件,提示你已经发布成功。

Nuget包导入到dotnet模板,并创建新工程

在上边发布成功了以后,我们直接就可以通过 nuget 唯一包id,来进行导入dotnet 模板操作:

// 通过nuget.org ID 导入分发,这个名称,就是我们之前在 nuspec 范本文件中,配置的nuget包 ID
dotnet new --install Webapi.Core.Template.HGD::1.0.0

 

 执行之前用到的创建模板的命令,成功生成了项目:

dotnet new corewebapi -n New.Core

 

posted @ 2020-05-21 15:28  HuTiger  阅读(2962)  评论(6编辑  收藏  举报