.NET Core自定义项目模板的全过程
前言:
前面介绍 中介绍了一种简单的方式——通过创建项目导出为项目模板方式实现。本次将采用dotenet cil(手脚架)来创建项目模板。
那么,我们首先看下当前dotnet 支持的项目模板:
可以看到当前dotnet中已经提供了很多模板项目,那么如何根据项目开发的积累内容通过dotnet cli创建一个自己的项目来提升开发效率呢?
1、实现自定义项目模板
自定义模板项目模板肯定就需要模板实现,本次就使用使用之前文章中项目结构作为模板项目来实现自定义项目模板
接下跟着步骤来创建模板项目
创建模板配置文件
在项目根文件夹中创建文件夹:.template.config 并在目录下创建 template.json。如下图:
定义项目模板相关信息
修改template.json内容为以下内容:
注意:shortname和sourcename
- author:模板作者
- classifications:模板特征标识。上文举例的配置是因为我自定义的模板包括了console和webapi。
- identity:此模板的唯一名称
- name:用户看到的模板名称
- shortname:短名称。当使用cli命令创建模板项目时,使用短名称将利于使用。
- sourcename:模板替换的关键文本,使用时需要注意,要选择合适的替换文本,不然容易误伤代码。
项目模板安装
接下来进入项目目录,将这个模板安装到cli中。使用dotnet new -i
进行模板的安装。
卸载项目模板:
使用命令创建项目:
apitmp:是模板配置文件中指定的shortname。
-n:指定的是将项目中出现的所有文本myjob
替换为test
,因为配置中sourcename是apitemplate,可按需配置。
-o:指定的是生成项目输出目录,上述命令生成项目输出到当前目录。
结果如下图:
此通过dotnet cli创建项目模板已完成,但仅仅这样完全不能满足日常工作需求。
如:a项目需要日志记录,但b项目不需要日志记录;a项目需要制定pg数据库作为存储方式,b项目需要制定mysql作为存储方式。
那么这些问题能否在项目创建时根据设置而满足项目需求呢?
2、模板项目进阶用法
文件过滤:根据参数过滤制定文件和代码内容
a) 定义参数:在template.json中添加以下内容:enableauditlog-参数名称
b) 取消审计日志生效位置:
c) 重新生成模板,查看当前模板支持的参数:
d) 创建项目检查设置是否生效:
选择执行:根据变量值选择程序集引用
a) 添加参数:dbtype指定选项数据库类型
b) 修改项目文件:根据条件选择对应程序集
c) 使用数据库处,同步处理
d) 更新模板后,查看已生成了对应参数
e) 创建项目查看生效情况:
可以看到项目引用和程序代码都根据传入参数生成了。
3、项目模板打包发布
好东西当然不能只给自己使用,而应该怎么将生成的模板给大家使用呢?——nuget 包发布
a)在模板根目录创建一个nuspec文件:apitmp.nuspec
b)使用nuget pack 命令打包
c) 发布到nuget服务,给小伙伴们下载使用
总结:
通过dotnet cli 创建的模板项目,能更方便的根据项目需求生成对应的项目结构,提升开发效率。
可以动手把积累的好项目打包成一个模板项目给小伙伴们使用
参考:
https://devblogs.microsoft.com/dotnet/how-to-create-your-own-templates-for-dotnet-new/
https://github.com/dotnet/dotnet-template-samples
https://docs.microsoft.com/en-us/dotnet/core/tools/dotnet-new
https://docs.microsoft.com/en-us/nuget/install-nuget-client-tools
到此这篇关于.net core自定义项目模板的文章就介绍到这了,更多相关.net core自定义项目模板内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
推荐阅读
-
.NET Core自定义项目模板的全过程
-
.NET Core使用Topshelf方式创建Windows服务的全过程记录
-
What?VS2019创建新项目居然没有.NET Core3.0的模板?Bug?
-
微服务统计,分析,图表,监控一体化的HttpReports项目在.Net Core 中的使用
-
.NET Core如何在新的项目系统中(.csproj)发布可执行文件
-
Jenkins 结合 Docker 为 .NET Core 项目实现低配版的 CI&CD
-
ASP.NET Core中自定义路由约束的实现
-
.Net Core库类项目跨项目读取配置文件的方法
-
详解使用DotNet CLI创建自定义的WPF项目模板
-
打造自己的.NET Core项目模板