.Net项目模板(Project Template)

发布于 2021-04-08 06:17

你有没有这样的感觉,开启一个新项目时,总是做一堆体力活——项目的结构层次,常用日志库,OpenAPI库,ORM库,的引入,权限认证方式选择添加,配置文件重新归置存放等等。公共框架的部分总是不变的,如果有个常用项目的模板就好了,可以一键创建,接下来直接写业务就ok了。

这种场景还适合一些公司对源码,项目,技术都有严格的要求,这时模板也能带来便利性。

Project Template在.Net中是很好的支持的,并且实现自己的模板也不是那么困难。


先来个开胃菜吧,安装完.net(core)的sdk后,可以在命令行上查看自己的现有项目模板。

命令:
> dotnet new -l
结果:

我们的目标是把自己的项目模板添加到这个列表里,然后用dotnet new 命令可以创建我们的项目了。

具体步骤:

1、创建一个控件台项目,命名GSWCon,这时,就可以整理自己的项目层次和添加自己想的三方库了。这里为了区分官方,只对输出作了少许改变。

using System;using Newtonsoft;using Newtonsoft.Json;using static System.Console;namespace GSWCon{    class Program    {        static void Main(string[] args)        {            var template = new Template            {                Name = "GSWCon",                Author = "桂素伟",                Description = "第一个项目模板,控制台项目,引入了Newtonsoft库!",                CreateTime = DateTime.Parse("2021-04-06 08:00:00")            };            WriteLine(JsonConvert.SerializeObject(template, Formatting.Indented));        }    }    class Template    {        public string Name { get; set; }        public string Author { get; set; }        public string Description { get; set; }        public DateTime CreateTime { get; set; }    }}

2、添加Template文件,在项目目录下(与csproj在一个目录下)创建.template.config文件夹,并且在这个文件夹中添加template.json文件,内容如下:

{  "$schema": "http://json.schemastore.org/template",  "author": "GuiSuWei",  "classifications": [ "Common", "Console","GuiSuWei"],  "identity": "GSW Console",  "name": "GSW Console",  "shortName": "GSWCon",  "tags": {    "language": "C#",    "type": "project"  },  "sourceName":"GSWCon"}

关于template.json文件的描述详情,可参考http://json.schemastore.org/template,基本名称就代码了它的含义。

template.json文件就是对项目模板的配置,其中的sourceName就是项目名称,当我用这个项目生成自己的项目时,这个名称会换成自己定义的项目名称。

3、生成项目模板,用cmd(终端),进入项目文件,删除bin,obj文件夹(如果存在),然后执行命令:dotnet new -i ./,这里就会看到自己的模板添加到了本地模板库里了,结果如下:

4、测试模板,创建自己的项目,假如项目名称叫ABC,那就创建一个文件夹ABC,cmd(终端)进入该文件夹,执行命令:dotnet new GSWCon,就会看到创建一个新的控制台项目,打开项目,项目里所有的GSWCon都会替换成ABC,代码和模板中的Program.js里的代码是一样的(GSWCon会被换成ABC)。

四步就完成了一个项目模板的创建和测试,这里只是一个极简的例子,真正的模板项目要复杂的多,后续慢慢加大难度。

本文来自网络或网友投稿,如有侵犯您的权益,请发邮件至:aisoutu@outlook.com 我们将第一时间删除。

相关素材