×

每个 .NET 开发者都该装的 8 个 NuGet 包,少一个你都亏了

独孤求败 独孤求败 发表于2026-05-08 12:25:04 浏览22 评论0

抢沙发发表评论

今天这篇文章,给大家整理了 「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% 的通用需求

NuGet 包
解决的问题
一句话评价
「Serilog」
日志记录
结构化日志,生产必备
「Polly」
弹性容错
接口调用的保险丝
「Dapper」
高性能查询
SQL 控的最爱
「FluentValidation」
参数验证
告别 if 地狱
「MediatR」
业务解耦
Controller 瘦身神器
「AutoMapper」
对象映射
拒绝无聊赋值代码
「Bogus」
假数据生成
开发测试效率翻倍
「Hangfire」
后台任务
任务调度开箱即用

这 8 个包,不是随便收集来的,而是真实项目中反复验证、NuGet 下载量均在千万级以上的主流选择。

每个包都解决了一个具体痛点,没有花架子,装上就能用。

新项目脚手架的时候,建议把这 8 个包的基础配置一次性做好,后续开发会顺滑很多。哪个方向你们项目用得最多?欢迎评论区交流~


最后

看到这里辛苦啦~如果这篇 .NET 干货帮你省下了时间、解决了困惑,顺手点个 🔥 赞支持一下!

你的每一份认可,都是我坚持输出的底气 ✨

技术上有任何疑问、想交流开发思路,随时留言;也欢迎关注公众号,和同频的 .NET 小伙伴一起进阶~


群贤毕至

访客