C# 常用三方库

ops/2024/11/23 18:41:12/

C# 第三方库

  • C# 第三方库
    • 日志工具库
    • REST 客户端
    • JSON 处理
    • App.config 文件自定义ConfigSection 的 auto 配置
    • ORM 工具
    • 嵌入数据库
    • 条码/二维码
    • 通讯类组件
      • 串口通讯 https://www.nuget.org/packages/GodSharp.SerialPort/
      • Modbus 通讯组件
      • 西门子通讯组件
      • Fins协议通讯组件,
    • 报表
    • 组件包(winform)
    • Docking 控制组件 (WinForm)
    • Grid 组件(WinForm)
    • Winform 下工控组件包
    • winform 下的 AGauge
    • Chart 组件 , winforms 下使用 scottChart , Blazor 下使用 livechart2 (基于 svg, 美观度要求不高的场景)
    • Redis 客户端 StackExchange.Redis
    • 轻量级的Web 框架 Nancy 和 Nancy.Hosting.Self
    • Winform 下的 RichTextBox 增强
    • Template engine
    • syntax highlight text editor
    • diagram
    • litedb, 嵌入型的mongodb
    • ObjectListView
    • ReoGrid
    • morelinq 和 ZZZ project 提供的 System.Linq.Dynamic
    • Masuit.Tools 工具类包
    • String处理类库
    • ZZZ project 提供的工具类包
    • autoMapper, Model类和DTO/ViewModel类转换工具
    • 最重要的参考项目, git extensions , 可以学到很多东西
    • MiniExcel 和 NPOI 包
    • Spire.XLS 和 Spire.Pdf Excel和PDF 商业组件(国产)
    • 表达式组件
    • Fody 的 ToString
    • Fody 的 NullGaurd
    • Glob 库
    • 混淆器
    • ID 生成算法包 NewId, https://www.nuget.org/packages/NewId
    • 依赖注入框架
    • 分布式MQ

C# 第三方库

基本上选用的都是 https://www.nuget.org 分类中最流行的那个库

日志工具库

NLOG 和 serilog

Stackify.com 简单入门文章 https://stackify.com/nlog-vs-log4net-vs-serilog/

NLog 支持结构化log输出, 下面是两种写法:

#json format log
logger.Info("{@actionDetails}", new {person="harry", action="buy a book", book="Master C# in 21 days"});
#key=value format log 
logger.Info("{actionDetails}", new {person="harry", action="buy a book", book="Master C# in 21 days"});

Nlog 可以直接将日志输出到richtextbox 文本框中, 非常实用.

REST 客户端

RestSharp 和 FlUrl, HttpClient 客户端 https://flurl.dev/

JSON 处理

Newtonsoft.Json

App.config 文件自定义ConfigSection 的 auto 配置

https://github.com/edpollitt/Nerdle.AutoConfig

ORM 工具

Dapper https://dapper-tutorial.net/

嵌入数据库

System.Data.SQLite

条码/二维码

QRCoder 和 ZXing.Net

通讯类组件

串口通讯 https://www.nuget.org/packages/GodSharp.SerialPort/

Modbus 通讯组件

NModbus 包 https://github.com/NModbus/NModbus

西门子通讯组件

Snap7 或者 S7.net https://www.bilibili.com/read/cv27227756/ https://zhuanlan.zhihu.com/p/364106300

Fins协议通讯组件,

.net Framework 类库 https://github.com/ping9719/OmronFinsTCP.Net
.net core 类库 https://github.com/ricado-group/dotnet-omron

报表

FastReport 开源版限制很多, 不能用于Winform项目不能导出PDF, 所以还是推荐使用 FastReport .net 商业版

QuestPDF 是另一个选择, 开源无功能限制, https://www.questpdf.com/

组件包(winform)

澳洲 ComponentFactory 出品的 Krypton , 2006~2014年是商业组件包, 由于销售不佳, 现在已经转为开源, 可见开发工具厂商即使是在澳洲, 也不太好生存.

https://github.com/ComponentFactory/Krypton

这个仓库有nuget 的下载链接, https://github.com/Wagnerp/Krypton-NET-Version-Dashboard

nuget 下载 Wagnerp 发布的, 注意版本 naming rule ,比如 Wagnerp Krypton 版本 5.472 对应的是.Net 4.7.2

Docking 控制组件 (WinForm)

Krypton 包也包含dock panel, 这个 dockpanelsuite 组件包, 这个是 WeifenLuo.WinFormsUI.Docking 后续版本

https://github.com/dockpanelsuite/dockpanelsuite

简单入门: 开源组件 DockPanelSuite使用

Grid 组件(WinForm)

曾经用过 AdvancedDataGridView, 问题很多, 现在使用 objectListView 非常好用.

Winform 下工控组件包

SeeSharpTools 和 HZH_Controls

有一些很实用的通用组件, 更有一些工控类控件,

winform 下的 AGauge

https://www.nuget.org/packages/AGauge_V2/2.0.2

https://github.com/Code-Artist/AGauge

Chart 组件 , winforms 下使用 scottChart , Blazor 下使用 livechart2 (基于 svg, 美观度要求不高的场景)

Redis 客户端 StackExchange.Redis

StackExchange.Redis 是 Stackoverflow 公司开源的, 质量有保证.

轻量级的Web 框架 Nancy 和 Nancy.Hosting.Self

 引入 Nancy 不是开发 Web 应用,  是开发 RPC 服务器,  Nancy 是一个轻量级的Web 框架, Nacy.Hosting.Self 是一个轻量级的Web 服务器.

Winform 下的 RichTextBox 增强

https://www.nuget.org/packages/RichTextBoxEx

Template engine

如需要功能强大的, 可选 scriban, 语法和 Jinja2/Liquid 类似,

https://github.com/lunet-io/scriban

如仅需要基本功能, 可以选用 https://github.com/thomaslevesque/NString , 下面是示例:

//NString模板示例:使用 Dictionary<string, object> 为模板传参,dictionary类型必须是<string,object>
Dictionary<string, object> dict = new Dictionary<string, object>();
dict.Add("Name", "a");
dict.Add("DateOfBirth", "b");
string text = StringTemplate.Format("{Name} was born on {DateOfBirth}", dict, false);
Console.WriteLine(text);//NString模板示例:使用对象为模板传参
var joe = new { Name = "Joe", DateOfBirth = new DateTime(1980, 6, 22) };
string text2 = StringTemplate.Format("{Name} was born on {DateOfBirth:D}", joe);
Text = text2;
Console.WriteLine(text2); 

syntax highlight text editor

https://github.com/StefH/ICSharpCode.TextEditorEx

diagram

https://github.com/dalssoft/diagramnet

litedb, 嵌入型的mongodb

https://www.litedb.org/

ObjectListView

免费的ListView, 支持treelist, 分组和Master-Detail 呈现

ReoGrid

免费的 spreedsheet 组件, 强大到令人发指, 甚至可以比拟 Excel

morelinq 和 ZZZ project 提供的 System.Linq.Dynamic

Masuit.Tools 工具类包

类似于Java 的 Hutool

String处理类库

NString https://github.com/thomaslevesque/NString

ZZZ project 提供的工具类包

https://github.com/zzzprojects/Z.ExtensionMethods

autoMapper, Model类和DTO/ViewModel类转换工具

最重要的参考项目, git extensions , 可以学到很多东西

MiniExcel 和 NPOI 包

用于 导出Excel

MiniExcel 速度更快,

NPOI 可支持更老的Framework 版本, 参考代码: https://www.thecodebuzz.com/read-and-write-excel-file-in-net-core-using-npoi/

Spire.XLS 和 Spire.Pdf Excel和PDF 商业组件(国产)

表达式组件

.net framework版 表达式计算 Ncalc, https://github.com/ncalc/ncalc

.net core 版表达式组件 https://github.com/mparlak/Flee

zzz project 的 z.expression.eval 收费

Fody 的 ToString

Fody 的 NullGaurd

Glob 库

按照文件名通配符搜索文件 https://www.nuget.org/packages/Glob/

混淆器

ConfuserEx 稳定性好

ID 生成算法包 NewId, https://www.nuget.org/packages/NewId

依赖注入框架

.net framework 下使用 NInject , .net core 使用微软官方即可

分布式MQ

RabbitMQ+EasyNetQ, 使用RabbitMQ作为偏事务型的分布式MQ, 可靠性还是最好的. EasyNetQ 客户端提供了reconnect 等开箱即用的特性


http://www.ppmy.cn/ops/136110.html

相关文章

深入探索Apache JMeter:HashTree结构解析与应用

Apache JMeter的TestPlan .jmx文件中&#xff0c;HashTree是用于组织和管理测试计划元素的关键数据结构。以下是对HashTree及其在JMeter中的作用和特点的详细解释&#xff1a; 一、HashTree的定义与作用 定义&#xff1a;HashTree是JMeter中用于存储和管理测试计划元素的一种…

解决vue-pdf的签章不显示问题

在使用vue-pdf 4.3.0时发现上传一般的普通pdf正常预览&#xff0c;但是上传带有红头文件的和和特殊字体的pdf无法正常内容显示&#xff0c;文字丢失问题。 1、查看控制台报错信息 2、缺少字体原因 getNumPages(url) {var loadingTask pdf.createLoadingTask({url: url,//引入…

【大数据学习 | Spark-Core】Spark的分区器(HashPartitioner和RangePartitioner)

之前学过的kv类型上面的算子 groupby groupByKey reduceBykey sortBy sortByKey join[cogroup left inner right] shuffle的 mapValues keys values flatMapValues 普通算子&#xff0c;管道形式的算子 shuffle的过程是因为数据产生了打乱重分&#xff0c;分组、排序、join等…

mysql in查询大数据量业务无法避免情境下优化

在 MySQL 中&#xff0c;IN 查询操作广泛用于从数据库中检索符合条件的多条记录&#xff0c;但当涉及到大数据量的 IN 查询时&#xff0c;性能可能会显著下降。特别是当 IN 子句中的元素数量非常大时&#xff0c;MySQL 需要对每个元素进行匹配&#xff0c;这会导致查询变得非常…

ffmpeg视频滤镜:提取缩略图-framestep

滤镜描述 官网地址 > FFmpeg Filters Documentation 这个滤镜会间隔N帧抽取一帧图片&#xff0c;因此这个可以用于设置视频的缩略图。总体上这个滤镜比较简单。 滤镜使用 滤镜参数 framestep AVOptions:step <int> ..FV....... set frame st…

单片机学习笔记 8. 矩阵键盘按键检测

更多单片机学习笔记&#xff1a;单片机学习笔记 1. 点亮一个LED灯单片机学习笔记 2. LED灯闪烁单片机学习笔记 3. LED灯流水灯单片机学习笔记 4. 蜂鸣器滴~滴~滴~单片机学习笔记 5. 数码管静态显示单片机学习笔记 6. 数码管动态显示单片机学习笔记 7. 独立键盘 目录 0、实现的…

华为IPD流程管理体系L1至L5最佳实践-解读

该文档主要介绍了华为IPD流程管理体系&#xff0c;包括流程体系架构、流程框架实施方法、各业务流程框架示例以及相关案例等内容&#xff0c;旨在帮助企业建立高效、规范的流程管理体系&#xff0c;实现业务的持续优化和发展。具体内容如下&#xff1a; 1. 华为流程体系概述 -…

BY组态-低代码web可视化组件

简介 BY组态是集实时数据展示、动态交互等一体的全功能可视化平台。帮助物联网、工业互联网、电力能源、水利工程、智慧农业、智慧医疗、智慧城市等场景快速实现数字孪生、大屏可视化、Web组态、SCADA等解决方案。具有实时监控、多样、变化、动态交互、高效、可扩展、支持自动…