使用.Net Core CLI命令dotnet new创建自定义模板

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

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

系统必备

.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.WindowsServiceTemplates: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

命令生成项目

JT是模板配置文件中指定的shortName。MyJob替换为Test,因为配置中sourceName是MyJob,可按需配置。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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/314212.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

lintcode 有效的括号序列

心血来潮,半夜做了一道Lintcode的题目,调试完睡觉,欢迎大家批评指正。 public boolean isValidParentheses(String s) {// Write your code hereStack stacknew Stack();if(s.length()0){return true;}else if(s.length()1){return false;}fo…

C++ 预处理命令

C 预处理命令 https://www.luogu.com.cn/blog/ofnoname/yu-chu-li-ming-ling#

P3312 [SDOI2014]数表(离线 + 树状数组前缀和优化)

P3312 [SDOI2014]数表 推式子 ∑i1n∑j1mσ(gcd(i,j))∑d1nσ(d)∑i1nd∑j1md[gcd(i,,j)1]∑d1nσ(d)∑d1ndμ(k)nkdmkdtkd∑t1nntmt∑d∣tσ(d)μ(td)\sum_{i 1}^{n} \sum_{j 1} ^{m} \sigma(gcd(i, j))\\ \sum_{d 1} ^{n} \sigma(d) \sum_{i 1} ^{\frac{n}{d}} \sum_{j …

2019 年 8 月编程语言排行榜,C#重回增长之路

至于火热的 Python,其占有率还是保持着一如既往的增长势头,由 7 月的 9.260% 上升到现在的 10.020%。C 的占有率则稍有下降,由 6.705% 下降到了 6.057%,C# 和 Visual Basic .NET 分别呈现出增长和下降的趋势。可能是本期榜单没什么…

[CQOI2015]选数(杜教筛)

[CQOI2015]选数 推式子 根据题意可写出式子: ∑a1LH∑a2LH⋯∑anLH[gcd(a1,a2…an)k]∑a1⌈Lk⌉⌊Hk⌋∑a2⌈Lk⌉⌊Hk⌋⋯∑an⌈Lk⌉⌊Hk⌋[gcd(a1,a2…an)k]∑k1⌊Hk⌋μ(k)(⌊Hkd⌋−⌈Lkd⌉1)n提前处理一下左右端点∑k1⌊Hk⌋μ(k)(⌊Hkd⌋−⌊L−1kd⌋)n\sum_…

asp.net core系列 71 Web架构分层指南

一.概述本章Web架构分层指南,参考了“Microsoft应用程序体系结构指南”(该书是在2009年出版的,当时出版是为了帮助开发人员和架构师更快速,更低风险地使用Microsoft平台和.NET Framework设计和构建有效,高质量的应用程…

P4719 【模板】“动态 DP“动态树分治(矩阵/轻重链剖分/ddp)

P4719 【模板】“动态 DP”&动态树分治 求解树上最大权独立集,但是需要支持修改。 https://www.luogu.com.cn/problem/solution/P4719 首先我们可以得到一个非常简单的dp式子,然后现在考虑怎么支持修改,首先每一次修改只会影响到当前节…

java编程笔记

程序功能:java统计abacbacdadbc中的每个字母出现的次数,输出格式是:a(4)b(3)c(3)d(2) 分析:将大小写按照同一个字母处理,最后都输出小写。 思路: 1.将string转成字符串数组,便于处理 2.遍历…

HDU 6607 Easy Math Problem(杜教筛 + min_25 + 拉格朗日插值)

Easy Math Problem 推式子 ∑i1n∑j1ngcd(i,j)Klcm(i,j)[gcd(i,j)∈prime]∑i1n∑j1ngcd(i,j)K−1ij[gcd(i,j)∈prime]∑d∈primendK1∑i1nd∑j1ndij[gcd(i,j)1]对∑i1n∑j1nij[gcd(i,j)1]化简2(∑i1niiϕ(i)[i1]2)−1∑i1ni2ϕ(i)∑d∈primendK1∑i1ndi2ϕ(i)\sum_{i 1} ^{n…

C#高级语法之泛型、泛型约束,类型安全、逆变和协变(思想原理)

一、为什么使用泛型?泛型其实就是一个不确定的类型,可以用在类和方法上,泛型在声明期间没有明确的定义类型,编译完成之后会生成一个占位符,只有在调用者调用时,传入指定的类型,才会用确切的类型…

mysql-5.7.10-winx64 MySQL服务无法启动,服务没有报告任何错误的解决办法

总结报错原因: 在my.init文件下新增data目录(datadir F:\mysqldata ) 最新解压版本的mysql 解压安装的时候报错 D:\mysql\mysql-5.7.10-winx64\bin>net start mysql MySQL 服务正在启动 …. MySQL 服务无法启动。 服务没有报告任何…

F - Sugoroku2(动态规划)

F - Sugoroku2 一个经典的概率期望dp的模型,现在要求从0移动到n,每次等概率移动1到m的距离,有k个点,一旦到达就移动回到0,一旦到达n或超过n游戏结束,求解步数期望。 那么我们dp的时候可以发现每一个值会有…

威佐夫博弈及其拓展

威佐夫博弈 普通威佐夫博弈: 两种操作:一、同时在两堆上取相同的个数。二、在某一堆上取任意个数。(每次取不为0) a[n]nα,b[n]a[n]n,α152a[n] n \alpha, b[n] a[n] n,\alpha \frac{1 \sqrt5}{2}a[n]nα,b[n]a[n]n,α215​…

E - Rotate and Flip(转化一般性)

E - Rotate and Flip 对于有n个点,m个变换(包括旋转90度和关于某条直线对称),q次询问ai点在bi个变换后的坐标。 显然对于这些变换我们都是能够直接利用公式求解的,所以我们直接用未知数表示变换后的坐标即可&#xf…

谈自由,ASP.NET Core才是未来?

首先我要说一下自己对自由的理解:自由是我可以选择不干什么,但我要保留我可以干什么的可能性。比如说我现在只有一个码农的角色,但我仍然要保留可以扮演其他角色的可能,比如成为一个作者,当我写下文章的时候已经是了&a…

Spring Boot 学习之旅

1. Spring Boot默认读取的application.properties有点坑,并没有主动去掉每一行后边的空格,如 encoding.spring.thymeleaf.encodingUTF-8 就识别成了UTF-8空格,所以导致查找编码格式的时候报错。

Min_25筛有关求解次小质因子

#188. 【UR #13】Sanrd 题意化简就是求次小质因子,这一步我们可以在Min_25筛的ans计算中得到, S(n, j)表示的是最小质因子大于等于primejprime_jprimej​的加上质数的答案贡献, 要满足次小质因子,一定有除去这个数之后只剩下质…

今天,全网曝光这几个公众号

有人统计过,我们平均每天花在看内容上的时间是5-6小时与其每天被各种看过就忘的内容占据时间不如看点真正对你有价值的信息下面小编为你推荐几个高价值的公众号,这些公众号都是专注.NET技术它们提供的信息能真正提高你生活的质量当你迷茫的时候刷刷这些大…

dp套dp(动态规划)

dp套dp 这是一个对于一类动态规划的计数问题的处理方法,问题常常是如果形式确定就可以直接dp,但是现在却要求满足某个要求的所有方案数,一般的处理方法就是一维负责增量构造,其他维度用来表示内部dp状态,然后转移时候…

Redis学习之Docker环境搭建

最近想学习下Redis,想在本机部署redis集群,发现redis对windows支持不太友好,因此想着安装linux虚拟机,部署一个redis集群,供学习用。 首先想到的是linux虚拟机使用起来太麻烦,想用之前用过的vagrant来简化虚…