
在.NET 10的发布中,.NET MAUI 得到了一系列针对质量、性能和开发者生产力的更新。虽然没有大的 UI 变化,但这些改进填补了跨平台工作流程中缺失的细节,并优化了长期存在的平台行为问题。
MAUI 是 Multiplatform Application UI 的缩写。根据微软的说法,它是 Xamarin 和 Xamarin Forms 框架的演进,并将多个目标库和项目统一到一个项目中,以支持多设备。目前,MAUI支持编写可在 Android 5+、iOS 12.2+、macOS 12+(作为Mac Catalyst)、Samsung Tizen(由三星提供)、Windows 10 版本 1809+或 Windows 11 上运行的应用程序。.NET 10 MAUI 带来了针对Android 16(API 36 和 36.1)和iOS 26的更新版本绑定。
MAUI 作为.NET 10 的一部分发布,包含一个.NET 工作负载和一组 NuGet 包,使开发人员能够更精细地控制其应用程序将支持的版本。此外,MAUI 还引入了一个新的项目模板,与.NET Aspire服务实现了默认的项目集成:通过在MauiProgram中调用builder.AddServiceDefaults(),应用程序获得了内置的 OpenTelemetry 指标、跟踪和服务发现连接。
在该版本中,有一个新的XAML源代码生成器,它能够在构建时编译 XAML,而不是在运行时进行解析,这意味着可以更早地检测错误、加快启动速度并检查生成的代码。还有一项实验性功能,用于使用 CoreCLR 而不是 Mono 运行时。仅此一项功能就受到了开发人员的高度评价,他们称赞它“真正赋予了 MAUI 新生”。
开发人员还可以采用全局和隐式 XML 命名空间声明,减少重复的xmlns:属性,实现更简洁的标记。
MAUI 标准标记文件:
MAUI 10 隐式命名空间声明文件:
MAUI 的核心控件获得了更清晰的行为:在 iOS 和 Mac Catalyst 上,.NET 9 中引入的CollectionView和CarouselView的改进处理程序默认会启用,提高了稳定性和性能。
HybridWebView控件提供了新的初始化事件(WebViewInitializing和WebViewInitialized),InvokeJavaScriptAsync的重载可用于即发即忘(fire‑and‑forget)调用,另外,还有 Web 请求的拦截功能(例如,修改头信息、重定向请求、提供本地响应)。
安全区域行为得到改进:SafeAreaEdges属性出现在了 Layout、ContentView、ContentPage、Border 和 ScrollView 控件中,使用新的枚举(None、SoftInput、Container、Default、All)来实现对设备切口(cutouts)、主屏幕指示器、键盘覆盖和类似平台限制下内容的细粒度控制。
有些旧版 API 已被弃用。ListView、EntryCell、ImageCell、SwitchCell、TextCell和Compatibility.Layout被标记为已删除,以支持精简的现代化构造。
.NET MAUI的支持策略(由于对 Xcode/Android SDK 等的依赖)与.NET Core支持策略有所不同。.NET 版本分为在发布后支持 3 年(对于 LTS 版本)和在新版本发布后支持 1 年(对于 STS 版本)两种,但是 MAUI 版本仅在新版本发布后支持 6 个月。然而,MAUI 工作负载是独立于.NET 发布安装的,因为它们以 NuGet 包的形式发布。
关于.NET 10 MAUI 的更多信息,请参阅微软官方的“What’s new in .NET MAUI for .NET 10”文档、宣布.NET 10发布的博客,以及GitHub上关于MAUI的发布说明。








评论