使用.Net Core CLI命令dotnet new创建自定义模板
文章起源来自一篇博客:使用 .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,然后将项目拷贝进去。不多废话了。
- 建立文件夹,名为
.template.config - 在该文件下,创建文件
template.json - 打开文件,模板配置内容如下
{
"$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 创建 项目模板,模板项目,Template - DeepThought - 博客园
- Home · dotnet/templating Wiki
- dotnet new 自定义模板 - .NET Core CLI | Microsoft Docs
- 创建 dotnet new 项目模板 - .NET Core | Microsoft Docs
- dotnet/dotnet-template-samples: Samples showing how to create templates using the Template Engine for dotnet new and Visual Studio
- dotnet new 命令 - .NET Core CLI | Microsoft Docs
使用.Net Core CLI命令dotnet new创建自定义模板的更多相关文章
- dotnet core cli 命令
1 dotnet new 2 创建code 程序 dotnet new console using System; namespace cli { class Program { static voi ...
- .NET: 使用.NET Core CLI开发应用程序
要开发.NET Core应用程序,除了使用强大的Visual Studio之外,还可以使用.NET Core CLI..NET Core CLI (Command-Line Interface),也就 ...
- 『.NET Core CLI工具文档』(六)dotnet 命令
说明:本文是个人翻译文章,由于个人水平有限,有不对的地方请大家帮忙更正. 原文:dotnet command 翻译:dotnet 命令 名称 dotnet -- 运行命令行命令的一般驱动程序 概要 d ...
- 《ASP.NET Core In Action》读书笔记系列四 创建ASP.NET Core 应用步骤及相应CLI命令
一般情况下,我们都是从一个模板(template)开始创建应用的(模板:提供构建应用程序所需的基本代码).本节使用 Visual Studio 2017 .ASP.NET Core2.0和 Visua ...
- .net core CLI(创建VueJS||Angular结合的项目)
net core cli 是快速创建模板项目 安装CLI 参考: https://www.hanselman.com/blog/dotnetNewAngularAndDotnetNewReact.as ...
- 使用 DotNet CLI 创建自定义的 WPF 项目模板
描述 当我们安装完 DotNetCore 3.0 版本的 SDK 后,我们就可以创建基于 DotNetCore 的 WPF 项目模板,通过如下 CLI 可以方便快捷的创建并运行我们的项目: dotne ...
- 使用 .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& ...
- 『.NET Core CLI工具文档』(一).NET Core 命令行工具(CLI)
说明:本文是个人翻译文章,由于个人水平有限,有不对的地方请大家帮忙更正. 原文:.NET Core Command Line Tools 翻译:.NET Core命令行工具 什么是 .NET Core ...
- asp.net core 使用EF7 Code First 创建数据库,同时使用命令创建数据库
1.首先下载vs2015的Asp.Net Core(RC2)的插件工具(https://www.microsoft.com/net/core#windows)2.创建一个asp.net Core的项目 ...
随机推荐
- WMI_COM_API
Win32_Processor // CPU 处理器 Win32_PhysicalMemory // 物理内存 Win32_Keyboard // 键盘 Win32_PointingDevice // ...
- 个人永久性免费-Excel催化剂功能第52波-相同内容批量合并单元格,取消合并单元格并填充内容
在高级Excel用户群体中无比痛恨的合并单元格,在现实的表格中却阴魂不散的纠缠不断.今天Excel催化剂也来成为“帮凶”,制造更多的合并单元格.虽然开发出此功能,请使用过程中务必要保持节制,在可以称为 ...
- 【Gym - 100923A】Por Costel and Azerah(思维水题)
Por Costel and Azerah Descriptions 给你n个数 问你,有多少个子序列 的和是偶数 Example Input 233 10 124 2 Output 33 题目链接 ...
- [leetcode] 406. Queue Reconstruction by Height (medium)
原题 思路: 一开始完全没有思路..看了别人的思路才解出来. 先按照他们的高度从高到低(因为我后面用的从前往后遍历插入,当然也可以从低到高)排序,如果高度一样,那么按照k值从小到大排序. 排完序后我们 ...
- 前端手势控制图片插件书写四(图片上传及Ios图片方向问题)
1.在图片上传中,使用的input的type为File的属性.使用filereader的Api let that = this; var file = document.getElementById( ...
- 二十、Sql Server 保留几位小数的两种做法
问题: 数据库里的 float momey 类型,都会精确到多位小数.但有时候 我们不需要那么精确,例如,只精确到两位有效数字. 解决: 1. 使用 Round() 函数,如 Round(@num,2 ...
- webpack基础知识
一.基础 1 安装 npm i -g webpack webpack-cli // 推荐安装至本地 npm i -D webpack webpack-cli 2 webpck基础使用 2.1 webp ...
- Cordova-iOS SDK封装
源码编译与制作静态库 下载cordova-ios源码,下载地址为:cordova-ios 解压后使用Xcode进行编译,编译选定模拟器和Generic iOS Device,cmd+B,编译成功(Dy ...
- 【iOS】“找不到使用指定主机名的服务器”
今天用 Application Loader 提交 APP 的时,遇到了这个奇葩的问题,如下图: 后来换个网络解决了……我也不知道什么原因,就这么奇葩的弄好了……
- java中map,set的简单使用
package test2; import java.util.*; import static java.lang.System.out; public class test2 extends St ...