.net core自定义项目模板,创建自己的模板项目,使用命令行创建模板项目 电脑版发表于:2025/3/4 20:29 tn2> 项目模板非常有用,可以将日常积累的功能合并在模板中,不断的封装,不断的完善,可以避免项目开发中重复造轮子,提高开发效率,需要的时候可以一条命令创建即可。 [TOC] ### 一:搭建好需要创建项目模板的架子 比如可以把我们前面搭建的领域驱动的基础架构做成一套模板,然后在里边不断的封装,不断的完善,方便后边使用 <img src="https://img.tnblog.net/arcimg/aojiancc2/0890ec3c01f24e639adacc5514dfb93b.png" style="width:439px;height:auto;"> ### 二:创建模板配置文件,并且设置好相关的配置 在项目根文件夹中创建文件夹:`.template.config` 并在目录下创建 `template.json` 。如下图: <img src="https://img.tnblog.net/arcimg/aojiancc2/6d40a5f2233044288eec3d311aef4efb.png" style="width:439px;height:auto;"> <img src="https://img.tnblog.net/arcimg/aojiancc2/6113d6b850334ef5afb38bbdadd49294.png" style="width:439px;height:auto;"> #### 在项目模板配置文件中添加好相关配置信息 ``` { "author": "AJ", //作者,必须 "classifications": [ "Web/WebAPI" ], //必须,这个对应模板的Tags "name": "ASP.NET Core 领域驱动基础模板", //必须,这个对应模板的Templates,支持中文 "identity": "AJCoreAbpTemplate", //可选,模板的唯一名称 "shortName": "AJCoreAbpTmp", //必须,这个对应模板的Short Name(短名称) "tags": { "language": "C#" , "type":"project" }, "sourceName": "TeacherCertification", // 可选,要替换的名字,一般这里都填写原始项目的名称,才好修改嘛,不然模板下载下来还是原来项目的名称 "preferNameDirectory": true // 可选,添加目录 } ``` sourceName配置的时候要注意,要选择合适的替换文本,不然容易误伤代码,一般这里都填写原始项目的名称,后面使用命令创建的时候就会自动替换项目名称,以及类里边的名称空间这些。 ### 三:安装项目模板 在项目根目录外层执行命令即可: ``` dotnet new install TeacherCertificationAPI ``` #### 安装的时候要注意路径,不是在项目目录中去执行命令 比如在项目目录中去执行安装命令的话,会提示未找到任何模板  #### 正确的做法应该在外层,而且名称要和项目文件夹的名称一致 <img src="https://img.tnblog.net/arcimg/aojiancc2/7e58439d876945d59d7a9f2a14e5dbc5.png" style="width:639px;height:auto;"> 模板安装成功,可以看到我们刚刚配置的模板名,短名称等 <img src="https://img.tnblog.net/arcimg/aojiancc2/4311242dbe244f4f8ecff9d27c92e4de.png" style="width:639px;height:auto;"> #### 使用命令查看目前所有的模板情况 ``` dotnet new list ``` <img src="https://img.tnblog.net/arcimg/aojiancc2/009cf1963bcf477e865f52249c999399.png" style="width:669px;height:auto;"> #### 卸载项目模板: 命令如下 ``` dotnet new uninstall TeacherCertificationAPI ``` 同样要注意一下执行命令的目录位置,和安装模板的时候一样 ### 四:使用项目模板 项目模板制作好了,我们就可以使用项目模板了,这样我们在新建一个项目的时候就可以很方便了,不用去复制一份还要挨着进行一个项目一个项目的重命名。 #### 使用命令行创建项目 命令: ``` dotnet new AJCoreAbpTmp -n WaterTapCollection -o . ``` - AJCoreAbpTmp:是模板配置文件中指定的shortName(短名称)。 - -n:将项目中出现的所有文本TeacherCertification替换为WaterTapCollection,因为配置中sourceName是TeacherCertification,可按需配置。其实就理解为新项目名称即可,原理就是根据模板配置中的替换实现的。 - -o:指定的是生成项目输出目录,上述命令生成项目输出到当前目录。 **使用命令创建的项目模板如下:** 效果还是很不错的,名称这些都弄好了 <img src="https://img.tnblog.net/arcimg/aojiancc2/467af35ad74840eda8da6d2a02915f8a.png" style="width:399px;height:auto;"> 而且创建的模板体积比原项目更小,应该是去掉了一些编译的内容,更方便于新项目的开发。 ### 五:模板项目进阶用法 待续 ### 六:把项目模板发布到nuget 待续