.NET 10 新特性
更新: 2025-12-08 14:45:00 字数: 0 字 时长: 0 分钟
2025 年 2 月 25 日,.NET 10 发布第一个预览版
2025 年 11 月 11 日,.NET 10 正式发布
仅在 Visual Studio 2026 或 Visual Studio Code 中支持
1. 文件级应用:File-Based Apps
C# 现在可以像 Python 或 Node.js 一样直接运行脚本了!你只需要一个 .cs 文件,不用 .sln、不用 .csproj,直接跑起来!
c#
dotnet run main.cs文件内可以用 #: 指令 引入 SDK 和 NuGet 包,就像 #! 一样。
c#
#:sdk Microsoft.NET.Sdk.Web
#:package Microsoft.EntityFrameworkCore.Sqlite@9.0.0
using Microsoft.EntityFrameworkCore;甚至可以引用现有项目
c#
#:project ../MyProject/MyProject.csproj支持跨平台脚本
c#
#!/usr/bin/env dotnet
chmod +x app.cs
./app.cs如果项目长大了,随时可以转成正式项目结构
c#
dotnet project convert app.cs2. Minimal API 内置验证:Validation
终于不用自己写一堆 if (!ModelState.IsValid) 了!
c#
builder.Services.AddValidation();
app.MapPost("/products",
([Range(1, int.MaxValue)] int productId, [Required] string name) =>
TypedResults.Ok(new { productId, name })
);还可以按路由禁用:
c#
app.MapPost("/raw", (int id, string name) => TypedResults.Ok(id))
.DisableValidation();3. Server-Sent Events(SSE)
原生支持轻量级实时流:
c#
app.MapGet("/stocks", (StockService s, CancellationToken ct) =>
TypedResults.ServerSentEvents(s.Generate(ct), eventType: "stockUpdate"));4. OpenAPI 3.1 + YAML 支持
更现代的 API 文档标准:
c#
builder.Services.AddOpenApi(o =>
o.OpenApiVersion = Microsoft.OpenApi.OpenApiSpecVersion.OpenApi3_1);
if (app.Environment.IsDevelopment())
{
app.MapOpenApi("/openapi/{documentName}.yaml");
}5. System.Text.Json 的 JSON Patch
支持 RFC 6902 的 JSON Patch:
c#
dotnet add package Microsoft.AspNetCore.JsonPatch.SystemTextJson --prerelease6. EF Core 10 新特性
- 复杂类型(Complex Types)与 JSON 映射
- LINQ 新操作符:LeftJoin / RightJoin
- 支持对 JSON 列的 ExecuteUpdate
- 命名查询过滤器(Named Filters)
- ExecuteUpdateAsync 支持普通 Lambda
7. 其他 .NET 10 改进
- 性能:JIT 与 GC 进一步优化,热路径更快
- SDK:CLI 体验改进,脚本到项目的转换更流畅
- 库更新:Aspire 持续增强





