跳到内容
Chris 的博客

.NET 8 / 9 / 10 版本更新对比一览

从 .NET 8(LTS)到 9(STS)再到 10(LTS),运行时、GC、JIT、SDK、ASP.NET Core 到底改了什么?一篇按主题横向对比,帮你决定升不升、升到哪。

技术 2 分钟阅读

最近几个 .NET 大版本节奏很稳:每年 11 月一个,奇数版是 STS(标准支持,18 个月),偶数版是 LTS(长期支持,3 年)。这篇把 .NET 8 / 9 / 10 的关键变化按主题横着摆,方便对比。

版本发布类型支持到
.NET 82023-11LTS2026-11
.NET 92024-11STS2026-05(已接近 EOL)
.NET 102025-11LTS2028-11

结论先行:生产环境优先选 LTS(8 或 10)。.NET 9 作为 STS 支持期短,适合愿意跟进、追新特性的项目。新项目直接上 .NET 10

维度.NET 8.NET 9.NET 10
动态 PGO默认开启(平均 +15% 性能)持续优化持续优化
结构体提升新增 physical promotion(打破”≤4 字段”限制)
SIMDAVX-512 支持Arm64 向量化增强AVX10.2 支持(待硬件)
内联/去虚化循环优化数组接口方法去虚化try-finally 也能内联
栈分配闭包/委托可栈分配(逃逸分析增强)
循环优化引入多项循环优化图结构循环识别,loop inversion 更精准
代码布局用 3-opt 启发式(类比 TSP)重排基本块,热路径更紧凑

  • .NET 8:引入 DATAS(动态适配应用大小)作为 可选 特性 —— 堆大小随存活数据按比例伸缩。
  • .NET 9:DATAS 默认开启,替代默认的 Server GC 行为,云原生/容器内存占用更友好。
  • .NET 10:Arm64 写屏障改进,GC 暂停时间实测改善 8% ~ 20%

如果你跑在 Arm64(如 AWS Graviton、Apple Silicon、树莓派),.NET 10 的 GC 改进尤其值得升。

版本安全相关
.NET 9CET(控制流强制技术)在 Windows 默认开启 —— 硬件级栈保护,防 ROP 攻击
.NET 10后量子密码学大幅扩展:ML-DSA 简化 API、HashML-DSA、Composite ML-DSA、Windows CNG 支持;AES KeyWrap with Padding

  • .NET 8:SearchValues<T>(高速多值查找)、CompositeFormatXxHash3/XxHash128
  • .NET 9:SearchValues 扩展、特性开关(feature switch)+ 裁剪支持。
  • .NET 10:
    • JSON:禁止重复属性、严格序列化、PipeReader 支持
    • 网络:WebSocketStream 简化用法、macOS 客户端 TLS 1.3
    • 加密/全球化/数值/集合/诊断/ZIP 多处新 API
    • 进程管理:Windows 进程组(更好的信号隔离)

.NET 10 SDK 这块改进非常实用:

  • dotnet test 支持 Microsoft.Testing.Platform(MTP) —— 新一代测试运行时
  • CLI 命令顺序标准化,生成各 shell 的原生 Tab 补全脚本
  • 控制台应用可原生打包容器镜像,新属性可显式指定镜像格式
  • dotnet tool exec 一次性执行工具 + 新的 dnx 执行脚本
  • 平台特定工具兼容性增强(any RID)
  • --cli-schema 做 CLI 自省
  • **基于文件的应用(file-based apps)**支持 publish 和 Native AOT —— 单文件脚本式 C# 体验更完整

  • .NET 9:内置 OpenAPI 文档生成、静态资源指纹化、Blazor 多项改进。
  • .NET 10(ASP.NET Core 10):Blazor WebAssembly 预加载、内存池自动驱逐、表单验证增强、Identity 的 Passkey 支持、诊断改进。

Aspire 已从 .NET 独立出来按自己的节奏迭代,.NET 10 时代对应 Aspire 13.1,用于本地编排多服务 + 可观测性面板。

Terminal window
# 查看已安装的 SDK / 运行时
dotnet --list-sdks
dotnet --list-runtimes
# 项目里改目标框架
# <TargetFramework>net10.0</TargetFramework>
# 用内置工具扫描升级点(可选)
dotnet tool install -g upgrade-assistant
upgrade-assistant upgrade

升级清单建议:

  1. TargetFrameworknet10.0
  2. dotnet restore && dotnet build,处理告警
  3. 跑测试(顺便体验 MTP)
  4. 关注默认行为变化(如 GC DATAS、Windows CET),压测确认无回归

  • 求稳/生产 → .NET 10(LTS,3 年支持,GC/JIT 全面提升)
  • 还在 .NET 8 → 不急,支持到 2026-11;但新项目别再起 8 了
  • 在 .NET 9 → 尽快迁到 10(9 是短支持,快 EOL)

数据来源:Microsoft Learn《What’s new in .NET 8/9/10》官方文档。