文章起源来自一篇博客:使用 .NET CORE 创建 项目模板,模板项目,Template - DeepThought - 博客园

之前使用Abp的时候就很认同Abp创建模板项目的方式。想不到.Net Core出了更赞的方式创建模板。之前写过一个系列文章,有不少对Abp框架的改动(见文章:基于.NetCore和ABP框架如何让Windows服务执行Quartz定时作业 - repeatedly - 博客园),如果将其加入自定义模板,应该是一个不错的想法。

本篇文章就对该项目着手改造。项目代码地址:DotNetCore_Practice/ABP.WindowsService at master · PuzzledAlien/DotNetCore_Practice

系统必备

.NET Core 2.2 SDK 或更高版本。

搭建模板项目

因为是对现有的项目改造,将其作为模板进行改造,所以就直接在原有的项目上处理。私以为实际项目使用的话,可以创建一个目录名为AbpWindowsServiceTemplate,然后将项目拷贝进去。不多废话了。

  1. 建立文件夹,名为.template.config
  2. 在该文件下,创建文件template.json
  3. 打开文件,模板配置内容如下
{
"$schema": "http://json.schemastore.org/template",
"author": "TemplateAuthor",
"classifications": [ "Console","WebApi" ],
"name": "MyJobTemplate",
"identity": "MyJobTemplate",
"groupIdentity": "MyJobTemplate",
"shortName": "JT",
"tags": {
"language": "C#",
"type": "project"
},
"sourceName": "MyJob",
"preferNameDirectory": true
}

保存配置之后,这就算搭建成功。当然这是搭建一个项目的最基本配置,详细配置参考请查阅 json.schemastore.org/template

基础配置说明

  • $schema:template.json 文件的 JSON 架构。默认值使用http://json.schemastore.org/template
  • author:模板作者
  • classifications:模板特征标识。上文举例的配置是因为我自定义的模板包括了console和webapi。
  • identity:此模板的唯一名称
  • name:用户看到的模板名称
  • shortName:短名称。当使用CLI命令创建模板项目时,使用短名称将利于使用。
  • sourceName:模板替换的关键文本,使用时需要注意,要选择合适的替换文本,不然容易误伤代码。

如何使用

本地安装模板

在文件夹.template.config所在目录执行命令

dotnet  new  -i  .

上面的命令使用的是相对路径进行安装,还可以使用绝对路径安装。先卸载再尝试一下绝对路径安装。

卸载模板

执行卸载命令

dotnet new -u

执行之后可以看到罗列处理的所有已经安装的模板,以及相应的卸载命令。找到需要卸载的模板,类似下文。

 D:\GitHub\DotNetCore_Practice\ABP.WindowsService
Templates:
MyJobTemplate (JT) C#
Uninstall Command:
dotnet new -u D:\GitHub\DotNetCore_Practice\ABP.WindowsService

执行卸载命令

dotnet new -u D:\GitHub\DotNetCore_Practice\ABP.WindowsService

结果如下,卸载成功,可以通过命令dotnet new -l查看是否卸载成功

PS D:\TestTemplate> dotnet new -u D:\GitHub\DotNetCore_Practice\ABP.WindowsService\Demo.MyJob
PS D:\TestTemplate>

绝对路径安装

卸载模板之后,尝试绝对路径安装模板。尝试如下,安装成功

PS D:\TestTemplate> dotnet new -i D:\GitHub\DotNetCore_Practice\ABP.WindowsService\Demo.MyJob

命令生成项目

PS D:\TestTemplate> dotnet new JT -n Test -o .
The template "MyJobTemplate" was created successfully.

JT是模板配置文件中指定的shortName。

-n指定的是将项目中出现的所有文本MyJob替换为Test,因为配置中sourceName是MyJob,可按需配置。

-o指定的是生成项目输出目录,上述命令生成项目输出到了D:\TestTemplate

参考

使用.Net Core CLI命令dotnet new创建自定义模板的更多相关文章

  1. dotnet core cli 命令

    1 dotnet new 2 创建code 程序 dotnet new console using System; namespace cli { class Program { static voi ...

  2. .NET: 使用.NET Core CLI开发应用程序

    要开发.NET Core应用程序,除了使用强大的Visual Studio之外,还可以使用.NET Core CLI..NET Core CLI (Command-Line Interface),也就 ...

  3. 『.NET Core CLI工具文档』(六)dotnet 命令

    说明:本文是个人翻译文章,由于个人水平有限,有不对的地方请大家帮忙更正. 原文:dotnet command 翻译:dotnet 命令 名称 dotnet -- 运行命令行命令的一般驱动程序 概要 d ...

  4. 《ASP.NET Core In Action》读书笔记系列四 创建ASP.NET Core 应用步骤及相应CLI命令

    一般情况下,我们都是从一个模板(template)开始创建应用的(模板:提供构建应用程序所需的基本代码).本节使用 Visual Studio 2017 .ASP.NET Core2.0和 Visua ...

  5. .net core CLI(创建VueJS||Angular结合的项目)

    net core cli 是快速创建模板项目 安装CLI 参考: https://www.hanselman.com/blog/dotnetNewAngularAndDotnetNewReact.as ...

  6. 使用 DotNet CLI 创建自定义的 WPF 项目模板

    描述 当我们安装完 DotNetCore 3.0 版本的 SDK 后,我们就可以创建基于 DotNetCore 的 WPF 项目模板,通过如下 CLI 可以方便快捷的创建并运行我们的项目: dotne ...

  7. 使用 .NET Core CLI 创建 .NET Core 全局工具

    https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=2&ch=&tn=baiduhome_pg& ...

  8. 『.NET Core CLI工具文档』(一).NET Core 命令行工具(CLI)

    说明:本文是个人翻译文章,由于个人水平有限,有不对的地方请大家帮忙更正. 原文:.NET Core Command Line Tools 翻译:.NET Core命令行工具 什么是 .NET Core ...

  9. asp.net core 使用EF7 Code First 创建数据库,同时使用命令创建数据库

    1.首先下载vs2015的Asp.Net Core(RC2)的插件工具(https://www.microsoft.com/net/core#windows)2.创建一个asp.net Core的项目 ...

随机推荐

  1. Python用法

    Python用法 IDE IDE是集成开发环境:Integrated Development Environment的缩写. 使用IDE的好处在于按,可以把编写代码.组织项目.编译.运行.调试等放到一 ...

  2. TinycoreLinux的安装使用

    下载 http://www.tinycorelinux.net/7.x/x86_64/release/ distribution_files/ 05-Apr-2016 07:29 - src/ 24- ...

  3. SpringMvc返回JSON出现"$.result.currentLevel"

    "$.result.currentLevel" 问题描述 使用SpringMvc返回一个json数据的时候,会在产生的结果中出现如下的问题:"$.result.curre ...

  4. 【区分】Typescript 中 interface 和 type

    在接触 ts 相关代码的过程中,总能看到 interface 和 type 的身影.只记得,曾经遇到 type 时不懂查阅过,记得他们很像,相同的功能用哪一个都可以实现.但最近总看到他们,就想深入的了 ...

  5. JavaScript ES6 Promiss对象

    说明 Node.js中,以异步(Async)回调著称,使用了异步,提高了程序的执行效率,但是,代码可读性较差的. 假如有几个异步操作,后一个操作需要前一个操作的执行完毕之后返回的数据才能执行下去,如果 ...

  6. java实现线程的两种方式

    要求:一个火车站,三个售票员卖出100张票 1.通过继承Thread类实现 实现思路:建立ThreadTest类继承Thread并建立三个线程卖100张票 public class ThreadTes ...

  7. vue教程二 vue组件(2)

    每个组件都可以有自己的data.methods.computed和您之前看到的所有内容—就像Vue实例本身一样. 您可能已经注意到了组件和Vue实例之间的一个细微差别:Vue实例上的数据属性是一个对象 ...

  8. 机器学习经典分类算法 —— k-均值算法(附python实现代码及数据集)

    目录 工作原理 python实现 算法实战 对mnist数据集进行聚类 小结 附录 工作原理 聚类是一种无监督的学习,它将相似的对象归到同一个簇中.类似于全自动分类(自动的意思是连类别都是自动构建的) ...

  9. 【Android Studio】查看源码时提示“throw new RuntimeException("Stub!")”

    如题-- 详细问题及解决方法: http://blog.csdn.net/u010917495/article/details/51234179

  10. postman使用pre-request script计算md5

    接口加了验签逻辑,具体是md5(salt+时间戳).被某君吐槽说测试不方便啊能不能先关掉.其实没有必要打开又关闭验签功能,postman的pre-request script功能完全可以模拟客户端加密 ...