Nuget-自定义模板的创建与使用 (2)

 

using System.Data; #if MSSQL using Microsoft.Data.SqlClient; #elif MySQL using MySql.Data.MySqlClient; #endif namespace DynamicTplDemo.Infrastructure { /// <summary> /// 数据库上下文 /// </summary> public class DbContext { /// <summary> /// 连接字符串 /// </summary> private string _connStr; public DbContext(string connStr) { _connStr = connStr; } /// <summary> /// 打开连接 /// </summary> /// <returns></returns> public IDbConnection OpenConnection() { IDbConnection conn = null; #if MSSQL conn = new SqlConnection(); #elif MySQL conn = new MySqlConnection(); #endif conn.ConnectionString = _connStr; conn.Open(); return conn; } } }

 

DynamicTplDemo.Infrastructure.csproj文件中,通过节点PackageReference的Condition属性的表达式切换。完整内容如下:

 

<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <TargetFramework>net5.0</TargetFramework> </PropertyGroup> <ItemGroup> <PackageReference Include="Microsoft.Data.SqlClient" Version="3.0.0-preview1.21075.2" Condition="'$(MSSQL)'=='true'" /> <PackageReference Include="MySql.Data" Version="8.0.23" Condition="'$(MySql)'=='true'" /> </ItemGroup> </Project>

 

安装模板

安装命令:

 

dotnet new -i E:\SourceCode\MyPractices\MyTestTemplates\templates\DynamicTplDemo\src

 

查看该模板信息,执行命令:

 

dotnet new DynamicTpl --help

 

可以看到,该模板增加了选项-S|--SqlType,且该选项的可选值有MSSQL和MySQL。

Nuget-自定义模板的创建与使用

使用模板创建项目

执行命令:

 

dotnet new DynamicTplDemoAPI -n MyDynamicApi -o E:\SourceCode\MyPractices\MyTestTemplates\codes\MyDynamicApi -S MSSQL

 

提示如下,则表示成功:

Nuget-自定义模板的创建与使用

文件夹结构如下:

Nuget-自定义模板的创建与使用

代码结构如下,可以看到自动引入了MSSQL的驱动包:

Nuget-自定义模板的创建与使用

DbContext.cs文件中,也可以看到仅包含了MSSQL的引用,以及SqlConnection类:

 

using System.Data; using Microsoft.Data.SqlClient; namespace MyDynamicApi.Infrastructure { /// <summary> /// 数据库上下文 /// </summary> public class DbContext { /// <summary> /// 连接字符串 /// </summary> private string _connStr; public DbContext(string connStr) { _connStr = connStr; } /// <summary> /// 打开连接 /// </summary> /// <returns></returns> public IDbConnection OpenConnection() { IDbConnection conn = null; conn = new SqlConnection(); conn.ConnectionString = _connStr; conn.Open(); return conn; } } }

 

模板打包成Nuget包,并上传Nuget服务器

以上便是创建和使用模板的方法,但是直接将文件夹安装为模板,不是一个好的用法。因为在实际工作中,其他机器上需要使用该模板,就要把文件夹复制过去安装,很不方便。那这里就分享一下将模板打包称Nuget包,并上传到Nuget服务器,其他机器只需要执行两行命令,就可以轻松使用上模板。

模板打包 创建文件夹

建议在templates文件夹的同级新建文件夹:packages、tools。

tools:存放工具软件,下面内容会讲到。

packages:存放生成的包,下面内容会讲到

Nuget-自定义模板的创建与使用

下载nuget.exe文件

下载路径:https://www.nuget.org/downloads

选择合适的版本,下载到上面新建的tools文件夹下。

Nuget-自定义模板的创建与使用

创建.nuspec文件

参考文档:https://docs.microsoft.com/zh-cn/nuget/create-packages/creating-a-package

在模板项目的根目录下创建.nuspec文件,本部分内容在上面创建的动态模板上进行,故选择命名:DynamicTplDemo.nuspec。

Nuget-自定义模板的创建与使用

文件内容如下:

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

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