.NET 10 Preview 5 发布:Blazor 可观测性升级,XAML 语法更简洁!

作者:Almir Vuk
  • 2025-07-01
    北京
  • 本文字数:1882 字

    阅读完需:约 6 分钟

6 月初,微软宣布发布 .NET 10 Preview 5,为多个组件带来了更新,涵盖了 ASP.NET Core、.NET MAUI、Windows Presentation Foundation (WPF) 和 Entity Framework Core。据介绍,新版本通过一系列功能更新与改进,将帮助开发者有效提升工作效率、强化应用监控,并提供更灵活的定制选项。

在 ASP.NET Core 方面,此次更新增加了一项新功能:开发者可以通过 HttpSysOptions 中的 RequestQueueSecurityDescriptor 属性,为 HTTP.sys 请求队列配置自定义安全描述符。据称,该功能可在操作系统层面更好地控制请求队列的访问权限。

此外,支持 Minimal APIs 的验证解析器 (validation resolver) API 已被标记为实验性功能,以便未来进行修改,不过顶层的 AddValidation API 保持稳定。

OpenAPI 的生成能力得到了改进,现已支持 3.1 版本。此次发布还扩展了从 XML 文档中提取元数据的功能,能够识别标签作为响应描述。

此外,Blazor 框架引入了一种更简便的方法来渲染“未找到”(Not Found) 页面,即在路由配置中指定一个 NotFoundPage 组件。如发行说明所述,这种方法比旧的 NotFound 片段具有更高的优先级,并且已包含在默认的项目模板中。

<Router AppAssembly="@typeof(Program).Assembly" NotFoundPage="typeof(Pages.NotFound)"><Found Context="routeData">    <RouteView RouteData="@routeData" />    <FocusOnNavigate RouteData="@routeData" Selector="h1" /></Found><NotFound>This content will be ignored because we have NotFoundPage defined.</NotFound></Router>
复制代码

Preview 5 的一项亮点是,Blazor 正式支持详细的指标 (metrics) 与追踪 (tracing) 功能。据介绍,指标通过专用于组件、生命周期事件和服务器回路 (server circuits) 的计量器 (meter) 进行发布。

追踪功能则使用一个新的 Microsoft.AspNetCore.Components 活动源 (activity source),包含了对导航、事件处理和回路生命周期的详细检测信息。

值得注意的是,开发者可以通过配置 OpenTelemetry 来收集相应源和计量器的数据,从而启用这些诊断功能。

    builder.Services.ConfigureOpenTelemetryMeterProvider(meterProvider =>{    meterProvider.AddMeter("Microsoft.AspNetCore.Components");    meterProvider.AddMeter("Microsoft.AspNetCore.Components.Lifecycle");    meterProvider.AddMeter("Microsoft.AspNetCore.Components.Server.Circuits");});   builder.Services.ConfigureOpenTelemetryTracerProvider(tracerProvider =>    {        tracerProvider.AddSource("Microsoft.AspNetCore.Components");    });
复制代码

.NET MAUI 现已支持 XAML 全局隐式命名空间,此举旨在简化标记,使开发者可以跳过繁琐的 xmlns 声明,直接使用控件。新的全局命名空间可以包含自定义视图、转换器和第三方库,使 XAML 更为整洁且易于维护。

隐式命名空间可以通过项目属性激活,减少了繁琐声明的需要。不过,微软指出,由于该功能仍处于预览阶段,可能会出现工具链错误。

欲了解有关这些功能的更多信息,微软首席产品经理 David Ortinau 已发布了一篇专门的博客文章,详细介绍了 .NET MAUI 的最新更新。

.NET MAUI 的另一项显著新增是能够在 HybridWebView 中拦截 Web 请求。现在,开发者只需处理 WebResourceRequested 事件,就能够拦截、更改或阻止请求,进而实现注入自定义标头、提供本地资源等高级操作。

<HybridWebView WebResourceRequested="HybridWebView_WebResourceRequested" />
复制代码

.NET 对安卓和苹果平台(如 iOS、macOS 和 tvOS)的更新主要侧重于质量和稳定性的改进。具体细节可在相应的 GitHub 仓库中找到。

根据官方说法,WPF 为 Grid.RowDefinitions 和 Grid.ColumnDefinitions 引入了一种简写语法,这不仅让 XAML 更为简洁,还将改善对热重载 (Hot Reload) 的支持。

此次更新着重改进了字体、全球化及性能。在字体方面,新增的 simsun-extg 字体将改善东亚语言的渲染效果。Fluent 主题的优化则解决了崩溃问题,并加强了对 RTL(从右到左)布局的支持。此外,通过减少内存分配和移除无用代码,整体性能也获得了显著提升。

最后,EF Core 10 Preview 5 新增了为默认约束定义自定义名称的功能,让开发者对数据库模式的生成拥有了更多控制权。具体来说,开发者现在可以直接在模型配置中指定约束名称,或使用 UseNamedDefaultConstraints 为所有默认约束启用自动命名。

感兴趣的读者可以通过微软的官方文档和 GitHub 仓库查阅包含所有更新、修复和已知问题的完整发行说明

原文链接:https://www.infoq.com/news/2025/06/dotnet-10-preview-5/