其他分享
首页 > 其他分享> > 【学习笔记】三、生成自己的框架模板

【学习笔记】三、生成自己的框架模板

作者:互联网

前言

想要批量给项目更改名字,普通的方法只能一个一个的去更改,或者去VS中批量替换,但是有的封装的方法类,引用,命名空间会出现错误,正好老张的有介绍,借鉴一下

一、准备自己的项目模板

项目模板最好不带dll文件,太占资源

 

二、将项目模板导入到dotnet模块库中

 

1、在你的电脑任何地方,新建一个模板文件夹temple,用于以后打包多个模板使用,比如我是这样的(尽量按照这个格式来:content文件夹包含code模板)

 

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

 

 2、用于定义模板的配置文件 (template.json)

创建一个.template.config文件,和项目放在同一目录下

添加template.josn文件,里面包含作者信息,模板名称等

 

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

 

提示:这个模板被执行分发,添加到 dotnet 模板后,尽量保存好,不要删掉,因为如果删掉后,如果以后想卸载这个本地的模板,就不能了。

 

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

 

3、使用文件系统分发

 

把代码导入到 dotnet 模板里

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

 

与此对应的,就是卸载了,注意刚刚的那个文件地址不要删了(就是把新建的字母 i 变成了 u):

dotnet new -u D:\myTpl\temple\HouCoreTemple

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

 

随便找一个文件夹,创建新的模板

1 dotnet new houcoretpl -h // 查看模板信息帮助指令
2 
3 dotnet new  houcoretpl -n  houziAdmin// 创建模板,-n后面的是所要创建的项目名称

 

上面操作只是在本机上创建一个模板框架,如果更换电脑就会找不到了,所以我们需要发到线上去,以便于以后使用

 

三、发布项目到Nuget

1、添加nuspec范本文件

 

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

 

文件里面内容

 

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

 

注意:因为规范要求只识别英语,所以在创建的时候,需要把注释的汉语给删除

 

2、下载Nuget.exe

 

nuget.exe 工具了:https://www.nuget.org/downloads 

exe放在和nuspec同级的目录下

 

├── temple                               //  用来存放所有的模板
│   ├── HouCoreTemple                   //  HouCore模板全部内容
│   │    ├── content                     //  存放Code 项目代码,可直接运行
│   │    │    ├── .template.config       //  模板配置文件夹          
│   │    │    │    └── template.json     //  配置文件         
│   │    │    ├── Hou.Core          
│   │    │    ├──  .          
│   │    │    ├──  .          
│   │    │    ├──  .          
│   │    │    ├── Hou.Core.Services      
│   │    │    └── Hou.Core.sln     
│   │    │ 
│   │    ├── license                     //  存放版本许可信息,如果不添加,后边会警告,文章后边会提到
│   │    │    └── license.txt          
│   │    │ 
│   │    ├── Hou.Core.Webapi.Template.nuspec  //  nuget 打包的范本配置文件
│   │    │ 
│   │    ├── nuget.exe                  //  nuget.exe 可执行文件
│   │    │ 
│   │    └── 其他待定                     //  这里文章后边会打包的时候用到
│   │
│   └── OtherTemple                        //  其他模板信息

 

 

 

3、生成Nuget包

打开DOS命令,进入当前文件夹

// 执行打包操作,文件地址就是 nuspec 范本地址
nuget pack D:\temple\BlogCoreTemple\Hou.Core.Webapi.Template.nuspec

 

注意:这里有小伙伴提示错误nuget 命令行无效 ,你需要在nuget.exe 目录里操作,并且是 CMD 命令窗口

 

4、发布nuget.org

 首先你需要在 nuget.org 官网注册账号,上传页面:https://www.nuget.org/packages/manage/upload

  1、选择 nuget.org 顶部菜单中的“上传”,并浏览到包位置nuget.org

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

  3、如果包名称可用,nuget.org 将打开“验证”部分,可以在其中查看包清单中的元数据。 若要更改任何元数据,请编辑项目(项目文件或 .nuspec 文件)、重新生成、重新创建包,然后再次上传。

  4、在“导入文档”下,可以粘贴 Markdown、将 URL 指向文档,或上传文档文件。

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

大概需要审核几分钟,上传成功后,会收到官方的文件,提示发布成功。

 

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

 

1、使用nuget.org的包ID进行分发

// 通过nuget.org ID 导入分发,这个名称,就是我们之前在 nuspec 范本文件中,配置的nuget包 ID

dotnet new --install HouCore.Webapi.Template::1.0.0

 

2、直接使用nupkg包来导入

 

首先下载下来nupkg包,然后执行命令

 

// 将nupkg 包分发
dotnet new -i D:\temple\Hou.Core.Webapi.Template.1.0.0.nupkg

 

3、卸载模板

// 从 nuget.org 中存储的 NuGet 包卸载模板
dotnet new -u Hou.Core.Webapi.Template

 

结语

可能有些地方表述的不是很清楚,具体的可以看老张的原文

https://www.cnblogs.com/laozhang-is-phi/p/10205495.html#autoid-1-0-0

 

标签:Core,框架,笔记,nuget,Hou,dotnet,org,模板
来源: https://www.cnblogs.com/houshanwen/p/16106594.html