zoukankan      html  css  js  c++  java
  • .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

  • 相关阅读:
    032 Gradle 下载的依赖jar包在哪?
    031 can't rename root module,Android Studio修改项目名称
    030 Cannot resolve symbol'R' 问题解决汇总大全
    029 Android Studio层级显示目录文件
    028 You are about to commit CRLF line separators to the Git repository.It is recommended to set the core. autocrlf Git attribute to true to avoid line separator issues If you choose Fix and Comit ,
    027 【Android基础知识】Android Studio 编译慢及 Adb connection Error:远程主机强迫关闭了一个现有的连接
    026 Android Studio 和Gradle版版本对应关系
    025 Cause: org.jetbrains.plugins.gradle.tooling.util.ModuleComponentIdentifierIm
    024 Android Studio上传项目到Github 最全记录
    023 解决AndroidStudio下载gradle慢的问题
  • 原文地址:https://www.cnblogs.com/huguodong/p/12930875.html
Copyright © 2011-2022 走看看