【C#】封装.net framework函数库,并打包发布dll函数库到nuget服务器
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
作者:小5聊
简介:一只喜欢全栈方向的程序员专注基础和实战分享欢迎咨询尽绵薄之力答疑解惑
1、Nuget函数库管理工具
1.1、什么是Nuget
Nuget是一个.NET平台下的开源的项目它是Visual Studio的扩展。
在使用Visual Studio 或.NET CLI开发基于.NET 或.NET Framework的应用时Nuget能把在项目中添加、移除和更新引用的工作变得更加快捷方便。
说白了就是一个dll函数库文件管理平台类似一些代码管理平台一样。
温馨提示:因为只是存在dll文件所以建议大家还是尽量保留自己的源代码方便以后版本升级更新不然找不到源代码就很尴尬了
1.2、为什么会有Nuget
先分析下目前使用的大多数函数库也就是类和类方法一部分是自己项目本身添加的类和方法一部分是通过引用第三方的类所以会存在以下这些情况
1版本问题
为什么会出现版本的概念因为一个模块的功能是会随着时间而改进优化所以为了兼容和区别以前的代码就做了一个区别特别是面向大众化的函数库
举个栗子假如你的第一个版本方法名叫WayOne过了半年你把方法改为了WayTwo结果别人引用你的方法WayOne找不到了这就很离谱了。
2dll管理问题
在nuget没有出来之前引用第三方库是需要我们自己管理并且还是记住他的版本号不然引用版本不正确也是无法使用
有可能你的项目升级了但是还是用了以前的第三方库版本不一致也是无法使用还有可能你忘记把第三方库的dll提交
3总结
基于上面的问题痛点所以Nuget的出现就是来解决这些问题的
2、VS打开Nuget界面
Nuget是一个VS的扩展插件。我们在使用VS开发时Nuget能把在项目中添加、移除和更新引用的工作变得更加快捷方便。
2.1、鼠标右键引用或者依赖项
第一种打开方式选择管理NuGet程序包N
2.2、工具菜单栏打开
第二种打开方式点击VS顶部菜单栏选择工具在弹出菜单里选择【NuGet】包管理器
2.3、程序包管理器控制台
可以通过控制台命令式输入引用项目的名称和版本这个也是非常方便习惯使用命令的小伙伴就非常熟悉了。
可以指定程序包源和指定安装在那个项目特别要注意哦特别是在项目特别多的时候容易选错了
2.4、管理解决方案的NuGet程序包
使用非常简单直接在搜索文本框输入目标函数库名称即可右边还会有函数库对应的版本选择非常方便以后再也不用担心第三方库找不到了
2.5、程序包管理设置
3、创建项目
3.1、数据库访问功能
创建一个数据库访问的公共功能封装常用的增删改查方法直接设计单例模式调用访问
3.2、项目命名
给项目取个名字之后生成的dll就是使用这个名字所以需要提前想好命名。
这里选择的框架是.NET Framework 4.7.2以及控制台应用虽然是老框架但这里仅做例子使用
4、封装数据库访问功能
这里访问的数据库是sql server后续也会封装调用mysql、oracle等数据库并计划把源码存放到C占代码管理平台上
4.1、添加数据库访问类
使用.NET框架自带的ORM框架类进行封装就是所谓的ADO.NET常用的类也是刚步入职场面试官经常会问到的
1SqlConnection连接类
2SqlCommandsql语句执行类
3SqlDataAdapter数据装载类
- 定义一个静态全局变量
public static readonly string connectionString = "server=服务器地址;database=数据库名称;User ID=账号;password=密码";
- 增删改关键代码
public static int ExecuteNonQuery(string sql, params SqlParameter[] ps)
{
using (SqlConnection con = new SqlConnection(connectionString))
{
using (SqlCommand cmd = new SqlCommand(sql, con))
{
if (ps != null)
{
cmd.Parameters.AddRange(ps);
}
con.Open();
return cmd.ExecuteNonQuery();
}
}
}
- 查询关键代码
public static DataTable ExecuteTable(string sql, params SqlParameter[] ps)
{
DataTable dt = new DataTable();
using (SqlDataAdapter sda = new SqlDataAdapter(sql, connectionString))
{
if (ps != null)
{
sda.SelectCommand.Parameters.AddRange(ps);
}
sda.Fill(dt);
}
return dt;
}
- DataTable转实体类关键代码
public static List<T> TableToList<T>(DataTable dt) where T : class, new()
{
Type type = typeof(T);
List<T> list = new List<T>();
foreach (DataRow row in dt.Rows)
{
PropertyInfo[] properties = type.GetProperties();
T model = new T();
foreach (PropertyInfo p in properties)
{
object value = row[p.Name];
if (value == DBNull.Value)
{
//p.SetValue(model, "", null);
}
else
{
if (value is decimal)
{
p.SetValue(model, Convert.ToInt32(value), null);
}
else
{
p.SetValue(model, value, null);
}
}
}
list.Add(model);
}
return list;
}
5、登录Nuget
5.1、Nuget地址
2登录或注册账号
这里可以使用微软账号如果没有就直接注册一个新的账号操作都是非常简单
5.2、获取API密钥
1完成登录后首页点击右上角账号昵称
2选择API Keys选项
3创建API Key
点击Create会展开填写信息API Keys是有有效期的过了有效期也是可以针对当前项目进行刷新Key值
4完成创建
点击Copy按钮复制保存key值用于上传
5刷新有效期
点击Regenerate能够刷新key的有效期
6、打包项目和发布
在完成简单例子功能后接下来就是打包和上传到管理平台
6.1、下载Nuget.exe
下载地址:NuGet Gallery | Downloads
6.2、版本选择
博主这里选择的是nuget.exe v6.4.0可能下载速度会慢一点
6.3、放到项目根目录
将上步骤下载到的nuget.exe程序放到您当前创建的项目根目录下
6.4、鼠标右键没有看到打包选项
如果发现项目属性鼠标右键弹出来的菜单或属性页没有打包选项那么就需要先点击生成选项页。
这个是因为framework框架没有的选项之后的.net core框架才有。
6.5、命令式打包
1cmd先定位到项目根目录
cd 您的项目根目录地址
cd C:\Users\Administrator\source\repos\Xpp\Xpp
2先创建文件信息
格式:nuget + spec + 项目名
创建成功后会生成一个.nuspec的文件打开文件编辑修改一些打包参数信息
nuget spec XppHelper
3填写打包信息
直接把文件拖进来编辑或者文本文档都可以编辑。需要补充files标签默认没有
version=版本号根据实际情况填写
description=包说明描述
relaseNates=当前版本变更信息说明本次修改了或增加了那些主要功能
4打包命令
nuget pack XppHelper.nuspec
必须要填写对相关信息否则会打包失败
5打包成功
7、上传
7.1、命令上传
nuget.exe push Xpp.1.0.0.nupkg -Source https://www.nuget.org
7.2、提示没有API Key
会提示输入用户名和密码
7.3、设置API Key值
如果账号密码忘记了只记得有key值那么可以通过命令设置key值
格式:nuget setApiKey 你的key值
nuget setApiKey yourkey
7.4、再次上传
推送失败项目名称和Nuget创建的不一致
修改后推送成功
7.5、引用线上库
打开Nuget包管理器输入自己的项目名称刚上传大概要1~10分钟左右。
可以根据以下搜索出来的界面信息对照填写的参数信息
8、常见问题
8.1、找不到包
1问题
在以下主源中找不到包“XppHepler 1.0.5”:“https://api.nuget.org/v3/index.json”。请验证你的所有联机包源是否都可用以及是否正确指定了包 ID、版本
2解决方案
工具》选项》NuGet包管理器》常规》点击清除所有NuGet缓存
9、总结
Nuget推荐使用“.NET Standard”作为目标框架
到此整个函数库封装打包上传就完成了有疑问的地方可咨询或不足的地方望指教感谢您的阅读