乐于分享
好东西不私藏

Masuit.Tools:这个 C# 工具库,我后悔没早点发现

Masuit.Tools:这个 C# 工具库,我后悔没早点发现

做 C# 开发这么多年,你有没有遇到过这种情况:

写一个验证码生成,网上找半天代码,复制粘贴,调半天;要做个文件压缩,NuGet 搜一圈,不知道选哪个;想获取系统硬件信息,WMI 查询写得头疼……

每次都是重复造轮子,每次都在想:为什么没有一个”什么都有”的工具库?

直到我发现了 Masuit.Tools。

它到底有多”全”?

先看一组数字:

  • 488 个 C# 文件
  • 14 个核心功能模块
  • 8 个独立 NuGet 包
  • 支持 .NET Framework 4.5 到 .NET 10

这不是一个”专注做一件事”的库,这是一个”你能想到的常用功能都有”的工具箱。

字符串处理? 有。验证码生成(带图片)、SimHash 文本相似度、任意进制转换、模板引擎。

加密安全? 有。DES/AES/RSA 加密解密、MD5/SHA/CRC 哈希、RSA 密钥生成(支持 PKCS1/PKCS8/XML 三种格式)、零宽字符编解码。

文件操作? 有。文件签名检测(判断文件真实类型)、7z/ZIP/RAR 压缩解压、INI 文件读写、文本编码自动检测。

网络下载? 有。多线程下载器、断点续传、部分下载、FTP 客户端。

硬件信息? 有。CPU/内存/磁盘信息、系统温度监测、网卡 MAC 地址、进程 CPU/内存占用率,甚至集成了 Windows Defender 扫描。

图像处理? 有。图像哈希(AverageHash/PerceptualHash/DctHash)、图像水印、裁剪缩放、颜色转换(RGB/Lab/HSL/CMYK)、颜色差异计算。

数据库? 有。DataTable 转 List、动态 SQL 生成、EntityFrameworkCore 扩展。

日期时间? 有。中国农历转换、周数计算、时间段相交判断、天干地支计算。

数学计算? 有。坐标转换(WGS84/GCJ-02/BD-09,GPS 坐标纠偏)、权重随机筛选、百分位数计算、雷达图生成。

LINQ 扩展? 有。表达式树组合(And/Or/AndIf/OrIf),动态构建查询条件。

HTML 处理? 有。XSS 防护(HtmlSanitizer)、HTML 标签清理、自定义清理规则。

验证? 有。Email 验证(支持 DNS 检查)、手机号/座机号验证、IP 地址验证、身份证号验证、企业统一社会信用代码验证。

系统工具? 有。SnowFlake 分布式 ID 生成、并发集合(ConcurrentHashSet/ConcurrentHashQueue)、定长队列、大内存流(支持 1TB)、高精度计时器。

树形结构? 有。ITree 接口、Tree 泛型类、树形扩展方法(Filter/Flatten/ToList)。

我列了这么多,还只是一部分。

这就是为什么我说它被低估了——因为大多数人根本不知道它能做这么多事。

三个让我印象最深的功能

1. 文件签名检测:不再被文件扩展名骗

你有没有遇到过这种情况:一个 .jpg 文件,打开却是个 .exe;一个 .txt 文件,实际上是个 .zip

文件扩展名是可以随便改的,但文件头部的”魔数”(Magic Number)是改不了的。

Masuit.Tools 的 FileSignatureDetector 可以通过读取文件头部字节,判断文件的真实类型:

var realType = FileSignatureDetector.DetectFileType("suspicious.jpg");// 返回:FileType.Exe

支持几十种常见文件格式,包括图片、视频、压缩包、Office 文档、可执行文件等。

这个功能在文件上传场景特别有用——不要相信用户上传的文件扩展名。

2. 大内存流:突破 2GB 限制

.NET 的 MemoryStream 有一个硬伤:最大只能存 2GB 数据(因为内部用的是 byte[],数组长度上限是 int.MaxValue)。

如果你要处理超大文件(比如视频转码、大数据导出),MemoryStream 就不够用了。

Masuit.Tools 提供了 LargeMemoryStream,突破了这个限制:

usingvar stream = new LargeMemoryStream();// 可以写入 1TB 数据

内部实现是用多个小块拼接,对外接口和 MemoryStream 一样,无缝替换。

这是那种”平时用不到,用到了就救命”的功能。

3. 坐标转换:GPS 坐标纠偏

如果你做过地图相关的开发,一定知道中国的坐标系有多乱:

  • GPS 原始坐标(WGS84)
  • 国测局坐标(GCJ-02,火星坐标)
  • 百度坐标(BD-09)

不同地图服务商用的坐标系不一样,直接用会偏移几百米。

Masuit.Tools 提供了三种坐标系的互相转换:

// GPS 坐标转火星坐标var gcj = CoordinateConverter.WGS84ToGCJ02(lat, lng);// 火星坐标转百度坐标var bd = CoordinateConverter.GCJ02ToBD09(gcj.Lat, gcj.Lng);

不用再去找那些不知道对不对的转换公式了。

模块化设计:按需引用

Masuit.Tools 不是一个”全家桶”包,而是拆成了 8 个独立的 NuGet 包:

  • Masuit.Tools.Core
     – .NET Core 推荐
  • Masuit.Tools.Abstractions
     – 通用基础包
  • Masuit.Tools.Net
     – .NET Framework 4.6.1+
  • Masuit.Tools.Net45
     – .NET Framework 4.5 特供版
  • Masuit.Tools.AspNetCore
     – ASP.NET Core 专用(断点续传 FileResult、ModelBinder 等)
  • Masuit.Tools.Excel
     – Excel 导入导出专用
  • Masuit.Tools.NoSQL.MongoDBClient
     – MongoDB 操作封装
  • Masuit.Tools.DigitalWatermarker
     – 数字水印(基于 OpenCV)

你只需要引用你需要的包,不会把整个工具库都拉进来。

比如你只想用 Excel 导出功能,就只装 Masuit.Tools.Excel;如果你要用 MongoDB,就装 Masuit.Tools.NoSQL.MongoDBClient

这种设计很克制,不是”要么全要,要么不要”。

代码质量:值得信赖

看一个开源库靠不靠谱,不只看功能,还要看代码质量。

Masuit.Tools 的代码质量让我放心:

完整的 XML 文档注释每个公开方法都有详细的注释,IDE 里有完整的智能提示。

单元测试覆盖5 个测试项目,使用 xUnit 框架,覆盖主要功能模块。

持续维护最新版本 2.5.9.1,持续更新,支持最新的 .NET 版本。

获得 JetBrains 官方支持这是对开源项目质量的认可。

MIT 开源协议商业项目可以放心使用,没有法律风险。

实际使用:三个场景

场景一:生成验证码

// 生成 4 位验证码var code = ValidateCode.CreateValidateCode(4);// 生成验证码图片(带干扰线和噪点)var image = ValidateCode.CreateValidateGraphic(code);// 返回给前端return File(image, "image/png");

不用再去找那些年代久远的验证码生成代码了。

场景二:多线程下载大文件

var downloader = new MultiThreadDownloader(    url: "https://example.com/large-file.zip",    savePath: "D:\\download\\file.zip",    threadCount: 8);downloader.ProgressChanged += (sender, e) => {    Console.WriteLine($"进度:{e.ProgressPercentage}%");};await downloader.DownloadAsync();

支持断点续传,下载中断后可以继续。

场景三:动态构建查询条件

Expression<Func<User, bool>> where = u => true;if (!string.IsNullOrEmpty(name)){where = where.And(u => u.Name.Contains(name));}if (age.HasValue){where = where.And(u => u.Age == age.Value);}var users = dbContext.Users.Where(where).ToList();

不用写一堆 if-else 拼接 SQL 了。

为什么说它被低估?

因为大多数 C# 开发者根本不知道它的存在。

你去 GitHub 搜”C# tools”,排在前面的都是国外的库。Masuit.Tools 是国人开发的,文档是中文的,功能针对国内开发场景(比如农历转换、身份证验证、坐标纠偏),但知名度远不如那些国外库。

这不是因为它不够好,而是因为它不够”出名”。

如果你是 C# 开发者,强烈建议你把它加到你的工具箱里。

不是说它能解决所有问题,而是说——当你遇到那些”常见但琐碎”的需求时,它能帮你省下大量时间。

如何开始?

# 安装核心包dotnet add package Masuit.Tools.Core# 或者安装 ASP.NET Core 专用包dotnet add package Masuit.Tools.AspNetCore

官方文档:https://www.masuit.tools

GitHub:搜索 Masuit.Tools

你现在用什么工具库?或者你有没有遇到过”找不到合适的轮子”的情况?评论区聊聊。

本站文章均为手工撰写未经允许谢绝转载:夜雨聆风 » Masuit.Tools:这个 C# 工具库,我后悔没早点发现

猜你喜欢

  • 暂无文章