
精选 5 款基于 C# 开源、实用的工具类库开发效率提升利器作为一名 C# 开发者每天都在和代码打交道。你是否遇到过重复写日志、处理 JSON、操作 Excel 等琐碎工作别慌开源社区为你准备了大量实用的工具类库。今天我精选了 5 款基于 C# 的开源工具类库它们能帮你大幅提升开发效率让代码更简洁、更健壮。## 1. Serilog优雅的日志记录库日志是调试和监控的“眼睛”但传统的Console.WriteLine或System.Diagnostics.Trace显得笨重且难以管理。Serilog 是一个结构化的日志库支持多种输出目标文件、数据库、控制台还能与 ASP.NET Core 无缝集成。### 为什么推荐-结构化日志记录的对象可以是强类型便于查询和分析。-灵活配置通过配置文件或代码即可切换输出目标。-高性能异步写入不影响主线程。### 代码示例在控制台应用中记录日志csharpusing Serilog;// 配置 Serilog输出到控制台和文件Log.Logger new LoggerConfiguration() .MinimumLevel.Debug() // 设置最低日志级别 .WriteTo.Console() // 输出到控制台 .WriteTo.File(logs/app.log, rollingInterval: RollingInterval.Day) // 输出到文件按天滚动 .CreateLogger();try{ // 记录不同级别的日志 Log.Information(应用程序启动成功); Log.Debug(当前用户ID: {UserId}, 12345); Log.Warning(磁盘空间不足剩余 {FreeSpace} MB, 50); // 模拟错误 throw new Exception(数据库连接超时);}catch (Exception ex){ Log.Error(ex, 发生严重错误);}finally{ Log.CloseAndFlush(); // 确保日志写入完成}运行后你会看到控制台输出结构化日志同时logs文件夹下的文件会自动按日期分割。这对于生产环境排查问题非常有用。## 2. Newtonsoft.JsonJSON 处理的瑞士军刀在前后端分离、微服务盛行的时代JSON 是数据传输的“通用语言”。虽然 .NET Core 自带了System.Text.Json但Newtonsoft.Json凭借其强大的灵活性如自定义转换器、循环引用处理、LINQ to JSON仍是许多项目的标配。### 为什么推荐-兼容性强支持 .NET Framework 和 .NET Core。-丰富的 API轻松处理复杂 JSON 结构。-性能优化通过JsonSerializerSettings控制序列化行为。### 代码示例序列化与反序列化csharpusing Newtonsoft.Json;// 定义一个简单的用户类public class User{ public string Name { get; set; } public int Age { get; set; } public DateTime CreatedAt { get; set; }}class Program{ static void Main() { // 1. 对象序列化为 JSON 字符串 var user new User { Name 张三, Age 25, CreatedAt DateTime.Now }; string json JsonConvert.SerializeObject(user, Formatting.Indented); Console.WriteLine(序列化结果); Console.WriteLine(json); // 2. JSON 字符串反序列化为对象 string jsonInput { Name: 李四, Age: 30, CreatedAt: 2023-01-01T10:00:00 }; User deserializedUser JsonConvert.DeserializeObjectUser(jsonInput); Console.WriteLine($反序列化结果姓名{deserializedUser.Name}, 年龄{deserializedUser.Age}); }}输出效果序列化结果{ Name: 张三, Age: 25, CreatedAt: 2023-10-01T14:30:00.000Z}反序列化结果姓名李四, 年龄30## 3. Dapper轻量级 ORM 框架操作数据库时Entity Framework Core 虽然强大但略显笨重而 ADO.NET 又太底层。Dapper 是 Stack Overflow 团队开发的微型 ORM它通过扩展IDbConnection提供高效的 SQL 执行让你既保留 SQL 的灵活性又避免手写大量映射代码。### 为什么推荐-极致性能接近 ADO.NET 的性能适合高并发场景。-简单易用只需一行代码即可执行查询并映射到对象。-兼容性强支持 SQL Server、MySQL、PostgreSQL 等主流数据库。### 代码示例查询并返回强类型对象csharpusing Dapper;using System.Data.SqlClient;// 假设有一个 Product 表public class Product{ public int Id { get; set; } public string Name { get; set; } public decimal Price { get; set; }}class Program{ static void Main() { string connectionString Serverlocalhost;DatabaseMyDB;Trusted_Connectiontrue;; using (var connection new SqlConnection(connectionString)) { connection.Open(); // 执行查询并映射到 Product 对象列表 string sql SELECT Id, Name, Price FROM Products WHERE Price minPrice; var products connection.QueryProduct(sql, new { minPrice 10.0m }); foreach (var product in products) { Console.WriteLine($产品名{product.Name}, 价格{product.Price}); } // 执行插入操作 string insertSql INSERT INTO Products (Name, Price) VALUES (Name, Price); int rowsAffected connection.Execute(insertSql, new { Name 新商品, Price 99.9m }); Console.WriteLine($插入了 {rowsAffected} 行); } }}## 4. AutoMapper对象映射利器在分层架构中我们经常需要将 DTO数据传输对象转换为实体或反过来。手动写赋值代码不仅枯燥还容易漏掉字段。AutoMapper 通过约定和配置自动完成映射极大减少样板代码。### 为什么推荐-减少重复代码自动匹配同名属性。-灵活配置支持自定义映射规则、忽略字段、条件映射。-与依赖注入集成在 ASP.NET Core 中无缝使用。### 简洁示例不完整代码但思路清晰csharp// 定义源和目标类public class UserEntity { public int Id { get; set; } public string FullName { get; set; } }public class UserDto { public int Id { get; set; } public string Name { get; set; } }// 配置映射var config new MapperConfiguration(cfg { cfg.CreateMapUserEntity, UserDto() .ForMember(dest dest.Name, opt opt.MapFrom(src src.FullName)); // 自定义映射});var mapper config.CreateMapper();var entity new UserEntity { Id 1, FullName 张三 };var dto mapper.MapUserDto(entity); // 自动映射Name 字段来自 FullName## 5. EPPlusExcel 操作神器业务系统中导出 Excel 报表是家常便饭。EPPlus 是一个开源的 .NET 库让你无需安装 Office 即可读写 Excel 文件.xlsx 格式。它支持样式、公式、图表等高级功能。### 为什么推荐-纯代码操作无需 Excel 组件跨平台兼容。-功能全面支持合并单元格、数据验证、条件格式。-性能优异处理大量数据时内存占用低。### 代码示例创建 Excel 文件并写入数据csharpusing OfficeOpenXml;class Program{ static void Main() { // 设置许可证上下文EPPlus 5 需要 ExcelPackage.LicenseContext LicenseContext.NonCommercial; using (var package new ExcelPackage()) { // 添加工作表 var worksheet package.Workbook.Worksheets.Add(销售数据); // 设置表头 worksheet.Cells[1, 1].Value 产品名称; worksheet.Cells[1, 2].Value 销量; worksheet.Cells[1, 3].Value 单价; // 填充数据 worksheet.Cells[2, 1].Value 苹果; worksheet.Cells[2, 2].Value 100; worksheet.Cells[2, 3].Value 5.5m; worksheet.Cells[3, 1].Value 香蕉; worksheet.Cells[3, 2].Value 200; worksheet.Cells[3, 3].Value 3.2m; // 设置表头样式加粗、居中等 using (var range worksheet.Cells[1, 1, 1, 3]) { range.Style.Font.Bold true; range.Style.HorizontalAlignment OfficeOpenXml.Style.ExcelHorizontalAlignment.Center; } // 保存文件 string filePath D:\sales.xlsx; package.SaveAs(new FileInfo(filePath)); Console.WriteLine($Excel 文件已保存至{filePath}); } }}## 总结今天介绍的 5 款开源工具类库各有侧重-Serilog让日志结构化、易查询。-Newtonsoft.JsonJSON 处理的“万能钥匙”。-Dapper轻量级数据库操作性能与灵活兼备。-AutoMapper告别繁琐的对象映射代码。-EPPlus轻松生成专业 Excel 报表。这些库在 GitHub 上都有活跃维护社区文档丰富。实际项目中你可以根据需求组合使用它们让代码更简洁、开发更高效。下次遇到重复劳动时不妨先搜索一下开源方案——也许一个成熟的类库就能帮你省下半天时间建议在 NuGet 包管理器中搜索这些库直接安装即可使用。记得关注它们的版本更新和授权协议哦