前面介绍 自定义项目模板 中介绍了一种简单的方式——通过创建项目导出为项目模板方式实现。本次将采用dotenet cil(手脚架)来创建项目模板。
那么,我们首先看下当前dotnet 支持的项目模板:
可以看到当前dotnet中已经提供了很多模板项目,那么如何根据项目开发的积累内容通过dotnet cli创建一个自己的项目来提升开发效率呢?
1、实现自定义项目模板自定义模板项目模板肯定就需要模板实现,本次就使用使用之前文章中项目结构作为模板项目来实现自定义项目模板
接下跟着步骤来创建模板项目
创建模板配置文件
在项目根文件夹中创建文件夹:.template.config 并在目录下创建 template.json。如下图:
定义项目模板相关信息
修改template.json内容为以下内容:
{ "author": "cwsheng", //必须 "classifications": [ "Web/WebAPI" ], //必须,这个对应模板的Tags "name": "ApiTmp", //必须,这个对应模板的Templates "identity": "ApiTemplate", //可选,模板的唯一名称 "shortName": "apitmp", //必须,这个对应模板的Short Name "tags": { "language": "C#" , "type":"project" }, "sourceName": "ApiTemplate", // 可选,要替换的名字 "preferNameDirectory": true // 可选,添加目录 }
注意:shortName和sourceName
author:模板作者
classifications:模板特征标识。上文举例的配置是因为我自定义的模板包括了console和webapi。
identity:此模板的唯一名称
name:用户看到的模板名称
shortName:短名称。当使用CLI命令创建模板项目时,使用短名称将利于使用。
sourceName:模板替换的关键文本,使用时需要注意,要选择合适的替换文本,不然容易误伤代码。
项目模板安装
接下来进入项目目录,将这个模板安装到cli中。使用dotnet new -i 进行模板的安装。
dotnew new -i TempDemo
卸载项目模板:
dotnet new -u 模板目录
使用命令创建项目:
dotnet new apiTmp -n Test -o .
apiTmp:是模板配置文件中指定的shortName。
-n:指定的是将项目中出现的所有文本MyJob替换为Test,因为配置中sourceName是ApiTemplate,可按需配置。
-o:指定的是生成项目输出目录,上述命令生成项目输出到当前目录。
结果如下图:
此通过dotnet cli创建项目模板已完成,但仅仅这样完全不能满足日常工作需求。
如:A项目需要日志记录,但B项目不需要日志记录;A项目需要制定PG数据库作为存储方式,B项目需要制定MySQL作为存储方式。
那么这些问题能否在项目创建时根据设置而满足项目需求呢?
2、模板项目进阶用法文件过滤:根据参数过滤制定文件和代码内容
a) 定义参数:在template.json中添加以下内容:EnableAuditLog-参数名称
{ //…… "symbols": { //是否使用审计日志功能 "EnableAuditLog": { "type": "parameter", //它是参数 "dataType": "bool", //bool类型的参数 "defaultValue": "false" //默认是不启用 } }, "sources": [ { "modifiers": [ { "condition": "(!EnableAuditLog)", //条件,由EnableAuditLog参数决定 "exclude": [ //排除下面的文件 "AuditLogDemo/Fliters/AuditLogActionFilter.cs" ] } ] } ] }
b) 取消审计日志生效位置:
c) 重新生成模板,查看当前模板支持的参数:
d) 创建项目检查设置是否生效:
选择执行:根据变量值选择程序集引用
a) 添加参数:DbType指定选项数据库类型