打造自己的.NET Core项目模板(3)

<ItemGroup Condition="'$(MySQL)' == 'True' "> <PackageReference Include="MySqlConnector" Version="0.47.1" /> </ItemGroup> <ItemGroup Condition="'$(PgSQL)' == 'True' "> <PackageReference Include="Npgsql" Version="4.0.3" /> </ItemGroup> <ItemGroup Condition="'$(SQLite)' == 'True' "> <PackageReference Include="Microsoft.Data.Sqlite" Version="2.1.0" /> </ItemGroup>

同样的,代码也要做相应的处理

#if (MsSQL) using System.Data.SqlClient; #elif (MySQL) using MySql.Data.MySqlClient; #elif (PgSQL) using Npgsql; #else using Microsoft.Data.Sqlite; #endif protected DbConnection GetDbConnection() { #if (MsSQL) return new SqlConnection(_connStr); #elif (MySQL) return new MySqlConnection(_connStr); #elif (PgSQL) return new NpgsqlConnection(_connStr); #else return new SqliteConnection(_connStr); #endif }

修改好之后,同样要去重新安装这个模板,安装好之后,就可以看到sqlType这个参数了。

打造自己的.NET Core项目模板

下面分别创建一个MsSQL和PgSQL的项目,用来对比和验证。

先后执行

dotnet new tpl -n MsSQLTest -s MsSQL dotnet new tpl -n PgSQLTest -s PgSQL

然后打开对应的csproj

打造自己的.NET Core项目模板

可以看到,PgSQL的,添加多了NPgsql这个包。而MsSQL的却没有。

同样的,DapperRepositoryBase也是一样的效果。在创建Connection对象的时候,都根据模板来生成了。

打造自己的.NET Core项目模板

当然这个是在我们自己本地安装的模板,其他人是没有办法使用的。

如果想公开,可以发布到nuget上面去。如果是在公司内部共享,可以搭建一个内部的nuget服务,将模板上传到内部服务器里面去。

下面是一些可以开箱即用的模板:https://dotnetnew.azurewebsites.net/

总结

有一个自己的项目模板(脚手架),还是很方便的。

一建生成自己需要的东西,减少了不必要的代码复制,可以将更多精力放在业务实现上。

在平时还是要有一些积累,当积累足够丰富之后,我们的脚手架可能就会变得十分强大。

参考文档

dotnet new下面默认的模板 https://github.com/aspnet/Templating

templating的源码 https://github.com/dotnet/templating

template.json的说明 https://github.com/dotnet/templating/wiki/Reference-for-template.json

dotnet cli的文档

最后是文中的示例代码

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wdszpw.html