ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2022-04-06 15:35:25  阅读:231  来源: 互联网

标签:Core 框架 笔记 nuget Hou dotnet org 模板


前言

想要批量给项目更改名字,普通的方法只能一个一个的去更改,或者去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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有