Skip to content

.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 中支持

下载 .NET 10.0

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.cs

2. Minimal API 内置验证:Validation

终于不用自己写一堆  if (!ModelState.IsValid)  了!

c#
builder.Services.AddValidation();

app.MapPost("/products",
    ([Range(1, int.MaxValue)] int productId, [Requiredstring name) =>
        TypedResults.Ok(new { productId, name })
);

还可以按路由禁用:

c#
app.MapPost("/raw", (int idstring 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 --prerelease

6. EF Core 10 新特性

  • 复杂类型(Complex Types)与 JSON 映射
  • LINQ 新操作符:LeftJoin / RightJoin
  • 支持对 JSON 列的 ExecuteUpdate
  • 命名查询过滤器(Named Filters)
  • ExecuteUpdateAsync 支持普通 Lambda

7. 其他 .NET 10 改进

  • 性能:JIT 与 GC 进一步优化,热路径更快
  • SDK:CLI 体验改进,脚本到项目的转换更流畅
  • 库更新:Aspire 持续增强
你觉得这篇文章怎么样?
  • 0
  • 0
  • 0
  • 0
  • 0
  • 0
评论
  • 按正序
  • 按倒序
  • 按热度