• .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:	empleWebapiTemple

    卸载命令:

    dotnet new -u F:	empleWebapiTemple

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

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

    F:	est>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">licenselicense.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:	empleWebapiTempleWebapi.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

  • 相关阅读:
    CocoaPods的安装和使用
    HTTP协议(一)
    iOS常用设计模式之观察者模式
    git使用方法
    关于网络开发中XML的使用
    观察者模式的具体应用——通知(notification)机制和KVO(KeyValueObserving)机制
    HTTP协议(二)之HTTP请求
    iOS常用设计模式之委托模式
    x ^y mod m
    Problem A: 速算24点
  • 原文地址:https://www.cnblogs.com/huguodong/p/12930875.html
Copyright © 2020-2023  润新知