
微软已经发布了.NET 10的第一个候选发布版本(RC1)以及上线支持,这表明公司认为该框架已经准备好用于生产环境。在 RC1 中更新的各种工作负载中,.NET 多平台应用 UI(.NET MAUI)获得了几个针对可靠性和开发者生产力的目标增强。RC1 的注释关注于可观测性的改进、现有控件的调整以及 Android 的实验性新运行时选项。
.NET MAUI 在.NET 10 预览周期中稳步发展。早期的预览集中在性能优化和增量控件细化上,同时基本上保持了平台的底层架构不变。RC1 发布继续这一趋势,通过稳定 API 界面,并在 10 月 14 日之前增加一个上线许可,以便开发者可以在微软的支持下在生产环境中部署 RC1 构建。与早期的预览构建不同,RC1 功能齐全;剩余的大部分工作是缺陷修复和打磨,因此重点在于质量和诊断工具,而不是主要的新控件。
其中一个主要的新增功能是为.NET MAUI应用程序提供全面且可扩展的诊断和布局性能指标跟踪。该版本引入了一个新的 ActivitySource
和 Meter
,用于跟踪布局操作,称为 Microsoft.Maui
。这些原语发出与.NET Aspire 和 OpenTelemetry 仪表板集成的跟踪事件和性能计数器,实现了对布局测量和排列成本的实时可见性。该工具被实现为围绕 IView.Measure()
和 IView.Arrange()
的零分配结构体,以最小化开销。记录的指标包括测量和排列操作的数量计数器,以及这些操作持续时间的直方图。由于可以通过 System.Diagnostics.Metrics.Meter.IsSupported
开关在运行时禁用指标 API,开发者可以安全地修剪或提前编译他们的应用程序,而不必在不需要时支付诊断的成本。

.NET Aspire 仪表盘中的.NET MAUI 应用程序诊断
除了诊断之外,RC1 还更新了 HybridWebView
控件,以支持两个新的初始化事件: WebViewInitializing
和 WebViewInitialized
。这些事件反映了 BlazorWebView
上可用的事件,并允许开发者在底层 WebView
创建之前和之后进行钩子操作。例如,处理程序可以在视图构建之前( WebViewInitializing
)提供特定于平台的初始化参数,或在原生 WebView
实例可用后调整设置( WebViewInitialized
)。这一变化简化了需要跨 iOS、Android、Windows 和 macOS 自定义嵌入式 Web 控件的混合应用程序的编写。以前,这种自定义需要特定于平台的处理程序或反射;现在可以在一个跨平台的事件处理程序中完成。
一个小但受欢迎的可用性改进是 RefreshView
上新增了一个 IsRefreshEnabled
属性。到目前为止,开发者只能通过 IsEnabled
禁用整个控件;这阻止了包含的内容在需要禁用刷新功能时进行交互。新属性允许开发者禁用下拉刷新,同时保持底层内容活跃。这一变化使跨平台的行为一致,并在 XAML 声明中明确了意图。在发布说明中,微软演示了一个包装在 RefreshView
中的登录表单,当 IsRefreshEnabled="false"
时仍然可用。
作为 RC1 稳定化的一部分,微软已经弃用了几个遗留 API。“压缩”布局类型现在已过时,鼓励开发者避免不必要的布局容器嵌套。 Performance
和 IPerformanceProvider
类型在早期版本中提供了有限的检测,也被标记为过时。这些移除标志着向上述新的、标准化的诊断基础设施的转变。
最大的运行时变化出现在 Android 工作负载中。通过在项目文件中设置 <UseMonoRuntime>false</UseMonoRuntime>
,开发者现在可以选择在CoreCLR运行时而不是长期的 Mono 运行时上运行 Android 应用程序。该功能被标记为实验性,因此微软警告说,应用程序的大小将会增加,并且调试和一些运行时诊断可能不完整。尽管如此,这一举措表明了微软统一移动和桌面平台.NET 运行时体验的意图。鼓励早期采用者提供反馈,明确指出他们何时使用 CoreCLR。
开发者可以通过.NET 10 SDK下载 RC1,并安装Visual Studio 2026 Insiders或在 Visual Studio Code 中使用 C# Dev Kit。完整的MAUI RC1发布说明和相关资源可在 GitHub 上找到,微软鼓励通过.NET 10 GitHub问题提供反馈。
原文链接:
评论