.NET MAUI RC1发布:新增诊断工具与实验性Android CoreCLR支持

微软发布了.NET 10 RC1版本,其中.NET MAUI框架获得重要更新,包括全新的诊断工具、布局性能监控、HybridWebView增强功能,以及实验性的Android CoreCLR运行时支持,为跨平台应用开发提供更强大的工具链。

.NET MAUI RC1 带来诊断功能和实验性 Android CoreCLR 支持

微软已交付 .NET 10 的第一个发布候选版本(RC1)并提供了生产环境支持许可,表明该公司认为该框架已准备好用于生产。在 RC1 中更新的各种工作负载中,.NET 多平台应用 UI(.NET MAUI)获得了多项针对可靠性和开发人员生产力的增强。RC1 的发布说明重点关注可观察性改进、现有控件的调整以及 Android 的一个新的实验性运行时选项。

.NET MAUI 在 .NET 10 预览周期中一直在稳步发展。早期的预览版主要集中在性能优化和增量控件改进上,而平台的底层架构基本保持不变。RC1 发布延续了这一趋势,通过稳定 API 接口并添加有效期至 10 月 14 日的生产环境支持许可,开发人员可以在微软的支持下将 RC1 版本部署到生产环境中。与早期的预览版不同,RC1 是功能完整的版本;剩余的工作主要是错误修复和打磨,因此重点放在质量和诊断工具上,而不是主要的新控件。

其中一个重要的新增功能是面向 .NET MAUI 应用程序的全面且可扩展的诊断和布局性能指标跟踪。该版本引入了一个名为 Microsoft.Maui 的新 ActivitySource 和 Meter,用于跟踪布局操作。这些基础组件发出跟踪事件和性能计数器,可与 .NET Aspire 和 OpenTelemetry 仪表板集成,从而实现对布局测量和排列成本的可视化。该检测功能是围绕 IView.Measure()IView.Arrange() 实现的零分配结构,以最小化开销。记录的指标包括测量和排列操作次数的计数器,以及这些操作持续时间的直方图。由于指标 API 可以通过 System.Diagnostics.Metrics.Meter.IsSupported 开关在运行时禁用,开发人员可以安全地裁剪或预编译他们的应用程序,从而在不需要诊断时避免其开销。

除了诊断功能,RC1 更新了 HybridWebView 控件,以支持两个新的初始化事件:WebViewInitializingWebViewInitialized。这些事件与 BlazorWebView 上可用的事件类似,允许开发人员在底层 Web 视图创建之前和之后进行挂钩。例如,处理程序可以在视图构建之前提供特定于平台的初始化参数(WebViewInitializing),或者在原生 WebView 实例可用后调整其设置(WebViewInitialized)。这一变化简化了需要跨 iOS、Android、Windows 和 macOS 自定义嵌入式 Web 控件的混合应用程序的编写。以前,此类自定义需要特定于平台的处理程序或反射;现在可以在单个跨平台事件处理程序中完成。

一个虽小但受欢迎的可操作性改进是在 RefreshView 上添加了 IsRefreshEnabled 属性。在此之前,开发人员只能通过 IsEnabled 禁用整个控件;当需要禁用刷新功能时,这会阻止所包含的内容进行交互。新属性允许开发人员在保持底层内容活动的同时禁用下拉刷新功能。这一变化统一了跨平台的行为,并在 XAML 声明中明确了意图。在发布说明中,微软展示了一个包装在 RefreshView 中的登录表单,当 IsRefreshEnabled="false" 时该表单仍可使用。

作为 RC1 稳定工作的一部分,微软已弃用了一些旧版 API。“压缩"布局类型现已过时,鼓励开发人员避免不必要的布局容器嵌套。在早期版本中提供有限检测功能的 PerformanceIPerformanceProvider 类型也被标记为过时。这些移除标志着向上述新的标准化诊断基础设施的转变。

最大的运行时变化出现在 Android 工作负载中。开发人员现在可以通过在项目文件中设置 <UseMonoRuntime>false</UseMonoRuntime> 来选择在 CoreCLR 运行时上运行 Android 应用程序,而不是长期使用的 Mono 运行时。该功能被标记为实验性的,因此微软警告说应用程序大小将会增加,并且调试和一些运行时诊断可能不完整。尽管如此,此举表明了微软统一移动和桌面平台 .NET 运行时体验的意图。鼓励早期采用者提供反馈,并明确说明他们正在使用 CoreCLR。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计