今天这篇文章,给大家整理了 「8 个几乎每个项目都用得上的 NuGet 包」,附上核心用法和代码示例,直接拿去用。
1. Serilog —— 日志,从此告别拼字符串
「NuGet:」Serilog + Serilog.AspNetCore + Serilog.Sinks.File
如果你还在用 Console.WriteLine 记录日志,或者用 ILogger<T> 只输出纯文本,那你的日志在出问题的时候基本帮不上大忙。
Serilog 提供的是「结构化日志」——日志不只是一行字符串,而是带有字段的可查询数据。配合各种 Sink(输出目标),可以同时写文件、写数据库、发 Elasticsearch,随你选。
「安装:」
「基础配置(Program.cs):」
「使用方式:」
「为什么用它:」 日志级别分明、输出目标灵活、结构化数据便于后期追查问题。大型项目日志量一上去,结构化 vs 纯文本的差距会非常明显。
2. Polly —— 接口调用失败?让它自动重试
「NuGet:」Polly / Microsoft.Extensions.Http.Resilience(.NET 8+ 推荐)
调外部接口是每个项目都绕不开的事。网络抖动、服务短暂不可用、超时……这些「瞬时故障」如果没有处理,轻则接口报错,重则引发级联失败把整个系统拖垮。
Polly 专门解决这个问题,提供了**重试(Retry)、熔断(Circuit Breaker)、超时(Timeout)、舱壁隔离(Bulkhead)**等弹性策略,一行代码配一个。
「安装:」
「在 HttpClient 上配置重试策略:」
「.NET 8+ 的新写法(更简洁):」
「为什么用它:」 外部依赖不稳定是常态,不是例外。用 Polly 把容错策略统一管起来,比在每个调用处手写 try-catch + Thread.Sleep 专业得多,也可维护得多。
3. Dapper —— 查询性能要求高?直接写 SQL
「NuGet:」Dapper
Entity Framework Core 很好用,但某些场景下你需要原生 SQL 的性能——复杂的多表联查、大数据量报表、对执行计划有精确要求的查询。
这时候 Dapper 就是最佳选择。它是一个轻量级的 ORM 扩展,本质上就是给 IDbConnection 加了一堆扩展方法,让你写 SQL 同时自动映射到对象,性能接近原生 ADO.NET。
「安装:」
「核心用法:」
「实际架构建议:」 很多团队采用 「EF Core 写,Dapper 读」 的组合——写操作用 EF Core 享受它的追踪和迁移能力,复杂查询用 Dapper 保证性能,两者完美互补。
4. FluentValidation —— 参数验证,告别一堆 if
「NuGet:」FluentValidation.AspNetCore
你有没有写过这样的验证代码:
FluentValidation 让你用流畅的链式 API 定义验证规则,规则与业务逻辑分离,可读性和可测试性都大幅提升。
「安装:」
「定义验证器:」
「注册到 ASP.NET Core:」
注册之后,接口收到请求时会自动触发验证,验证不通过直接返回 400,完全不用在 Controller 里写一行验证代码。
5. MediatR —— Controller 瘦身,从现在开始
「NuGet:」MediatR
如果你的项目 Controller 越来越胖,一个方法里塞了一堆业务逻辑,或者 Service 层互相依赖成一团,那 MediatR 就是你需要的。
它实现了「中介者模式(Mediator Pattern)」,让 Controller 只负责接收请求和发出命令,具体的业务逻辑全部交给对应的 Handler 处理。配合 CQRS(命令查询职责分离),让代码层次极度清晰。
「安装:」
「定义 Command 和 Handler:」
「Controller 变得极度简洁:」
「MediatR 还支持 Pipeline Behavior」,可以在所有请求的前后插入横切逻辑——比如统一的日志记录、统一的 FluentValidation 验证、统一的事务处理,写一次,所有 Handler 都受益。
6. AutoMapper —— 对象映射,再也不用一行一行赋值
「NuGet:」AutoMapper
Entity → DTO → ViewModel,每层之间的对象转换是开发中最无聊、最容易出错的体力活之一。
AutoMapper 通过约定和配置,自动完成同名属性的映射,把你从繁琐的赋值代码中解放出来。
「安装:」
「定义映射配置:」
「注册和使用:」
❝「小提示:」 如果你追求更极致的映射性能,可以考虑用
❞Mapster替代 AutoMapper,它的性能更高,API 也相当友好。
7. Bogus —— 假数据生成,开发和测试的神器
「NuGet:」Bogus
开发阶段需要大量测试数据,你是不是还在手动往数据库里插假数据,或者写一堆 new Order { Name = "测试" } 这样的代码?
Bogus 可以帮你自动生成真实感强、随机多样的假数据——姓名、地址、手机号、邮箱、公司名、价格……应有尽有,还支持中文本地化。
「安装:」
「生成假数据:」
「数据库 Seed 场景:」
8. Hangfire —— 定时任务和后台队列,一个包全搞定
「NuGet:」Hangfire.AspNetCore + Hangfire.SqlServer(或 Redis)
后台任务、定时执行、发送邮件通知、异步处理耗时操作……这类需求几乎每个业务系统都有。
自己用 BackgroundService + Timer 实现固然可以,但没有可视化界面、不好监控失败重试、重启后任务丢失。Hangfire 把这些都处理好了,还自带一个漂亮的 Dashboard。
「安装:」
「配置(Program.cs):」
「四种任务类型,覆盖所有场景:」
Hangfire Dashboard 提供实时的任务状态监控——成功、失败、重试次数、执行时长,一目了然,出问题排查非常方便。
总结:8个包,覆盖开发中 80% 的通用需求
| 「Serilog」 | ||
| 「Polly」 | ||
| 「Dapper」 | ||
| 「FluentValidation」 | ||
| 「MediatR」 | ||
| 「AutoMapper」 | ||
| 「Bogus」 | ||
| 「Hangfire」 |
这 8 个包,不是随便收集来的,而是真实项目中反复验证、NuGet 下载量均在千万级以上的主流选择。
每个包都解决了一个具体痛点,没有花架子,装上就能用。
新项目脚手架的时候,建议把这 8 个包的基础配置一次性做好,后续开发会顺滑很多。哪个方向你们项目用得最多?欢迎评论区交流~
最后
看到这里辛苦啦~如果这篇 .NET 干货帮你省下了时间、解决了困惑,顺手点个 🔥 赞支持一下!
你的每一份认可,都是我坚持输出的底气 ✨
技术上有任何疑问、想交流开发思路,随时留言;也欢迎关注公众号,和同频的 .NET 小伙伴一起进阶~