首页 > 其他分享 >.NetCore自定义模板,发布Nuget

.NetCore自定义模板,发布Nuget

时间:2023-02-22 14:35:05浏览次数:63  
标签:自定义 NetCore -- Nuget dotnet Test 模板

1.创建模板项目框架

                       

 

2.创建模板文件

在项目文件夹根目录创建.template.config文件夹,在文件夹下创建新的文件:template.json

                      

 

 

 内容如下

{
  "$schema": "https://json.schemastore.org/template.json",
  "author": "cwsheng", //  模板作者  必须
  "classifications": [ "G6Test", "web api" ], //必须,这个对应模板的Tags 模板特征标识。上文举例的配置是因为我自定义的模板包括了console和webapi
  "name": "TestTmp", //必须,这个对应模板的Templates 用户看到的模板名称
  "identity": "TestTemplate", //可选,模板的唯一名称
  "shortName": "testtmp", //必须,这个对应模板的Short Name  短名称。当使用CLI命令创建模板项目时,使用短名称将利于使用。
  "tags": {
    "language": "C#",
    "type": "project"
  },
  "sourceName": "Test", // 可选,要替换的名字 
  //"preferNameDirectory": true  // 可选,添加目录
  "symbols": {
    //是否使用分层模板
    "EnableFramework": {
      "type": "parameter", //它是参数
      "dataType": "bool", //bool类型的参数
      "defaultValue": "true" //默认是启用
    }
  },
  "sources": [
    {
      "modifiers": [
        {
          "condition": "(!EnableFramework)", //条件,由EnableFramework参数决定
          "exclude": [ //排除下面的文件  支持Dic/** 以及Dic/*.cs的方式
            "Test.Domain/**",
            "Test.Domain.Share/**",
            "Test.IServices/**",
            "Test.Services/**"
          ]
        }
      ]
    }
  ]
}

3.安装模板

  项目目录打开命令行,运行以下命令以安装位于当前文件夹的模板:

    安装模板  (绝对路径)
    dotnet new install D:\MyProject\Test-DotnetNew\TestTemplate --force
卸载模板 dotnet new unsnstall D:\MyProject\Test-DotnetNew\TestTemplate

                   

查看模板

                   

查看模板支持选项

      

使用新模板创建项目

 // -n 项目名称  -o 生成项目路径  -E/--EnableFramework  自定义命令 (生成项目模式)
 dotnet new testtmp -n 111222  -E false

4.发布Nuget包,远程使用

创建Nuget配置文件,放到项目目录  需要注意的是files>file节点,这里用来排除模板中各子项目下的bin和obj文件夹。

<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
  <metadata>
    <id>testTmp</id>
    <version>1.0.0</version>
    <description> 动态模板包 </description>
    <authors>testG6</authors>
    <packageTypes>
      <packageType name="TestTemplate" />
    </packageTypes>
  </metadata>
    <files>
    <file src="TestTemplate\**" target="TestTemplate" exclude="**\bin\**;**\obj\**" />
  </files>
</package>

 

         

打包模板,并生成.nupkg文件

下载nuget.exe文件

下载路径:https://www.nuget.org/downloads

选择合适的版本,下载文件夹下。

 

 

                   

 

 

                                      

打包模板,并生成.nupkg文件

 -OutputDirectory ./  生成路径(默认当前路径)

D:\MyProject\Test-DotnetNew>nuget.exe pack TestTemplate/apiTmp.nuspec

 

 生成testTmp.1.0.0.nupkg 包

发布包至Nuget仓

dotnet nuget push --source "你的项目名" --api-key az  --interactive ./bin/Debug/azure_nuget.1.0.0.nupkg (暂未推送)

 通过拉取Nuget包,加载自定义模板

dotnet new --install testTmp::1.0.0 //(Nuget包名称::版本)

      

 

 查看本地模板

dotnet new list

 

标签:自定义,NetCore,--,Nuget,dotnet,Test,模板
From: https://www.cnblogs.com/loloAdd/p/17144098.html

相关文章

  • 微信小程序-自定义对话框
    <modaltitle="蓝牙扫描中...."hidden="{{deviceDialogHidden}}"bindconfirm="confirmClick"confirm-text="关闭"no-cancel="true"><scroll-viewclass="device-lis......
  • 自定义函数
     v-big点击按钮X加1乘以10<!--自定义函数--><divclass="weather"><h2>当前n是{{x}}</h2><h2>放大十......
  • aspnetcore 原生 DI 实现基于 key 的服务获取
    你可能想通过一个字符串或者其他的类型来获取一个具体的服务实现,那么在aspnetcore原生的MSDI中,如何实现呢?本文将介绍如何通过自定义工厂来实现。我们现在恰好有基于J......
  • aspnetcore 原生 DI 实现基于 key 的服务获取
    你可能想通过一个字符串或者其他的类型来获取一个具体的服务实现,那么在aspnetcore原生的MSDI中,如何实现呢?本文将介绍如何通过自定义工厂来实现。我们现在恰好有基于J......
  • aspnetcore 原生 DI 实现基于 key 的服务获取
    你可能想通过一个字符串或者其他的类型来获取一个具体的服务实现,那么在aspnetcore原生的MSDI中,如何实现呢?本文将介绍如何通过自定义工厂来实现。我们现在恰好有基于J......
  • aspnetcore 原生 DI 实现基于 key 的服务获取
    你可能想通过一个字符串或者其他的类型来获取一个具体的服务实现,那么在aspnetcore原生的MSDI中,如何实现呢?本文将介绍如何通过自定义工厂来实现。我们现在恰好有基于J......
  • aspnetcore 原生 DI 实现基于 key 的服务获取
    你可能想通过一个字符串或者其他的类型来获取一个具体的服务实现,那么在aspnetcore原生的MSDI中,如何实现呢?本文将介绍如何通过自定义工厂来实现。我们现在恰好有基于J......
  • aspnetcore 原生 DI 实现基于 key 的服务获取
    你可能想通过一个字符串或者其他的类型来获取一个具体的服务实现,那么在aspnetcore原生的MSDI中,如何实现呢?本文将介绍如何通过自定义工厂来实现。我们现在恰好有基于J......
  • fusion app自定义事件源码介绍(上)
    前言文章主要说明在FA中的中文函数的代码实现,不仅要知道用法,更要知其实现的原理。前面的用法为FA中的用法,仅支持在FA中使用,源码可以在其它app中使用。非原创,代码收集整......
  • 自定义的信号与槽发生重载的解决
    (一)解决方案1.方案在student.h中#ifndefSTUDENT_H#defineSTUDENT_H#include<QObject>classStudent:publicQObject{Q_OBJECTpublic:explicit......