用途:Uno Platform 用于从单一 C# 与 XAML 代码库构建跨平台 .NET 应用,可同时面向 WebAssembly、iOS、Android、macOS、Linux 和 Windows,也适用于将 WPF 或 UWP 应用迁移到跨平台,以及在非 Windows 平台使用 WinUI/UWP API。
主要能力:各平台渲染方式不同——Windows 使用 WinUI 3(原生 Windows App SDK),WebAssembly 使用 Skia/Canvas 在浏览器运行,iOS 使用 Skia/Metal,Android 使用 Skia/OpenGL,macOS 使用 Skia/Metal(Mac Catalyst 或 AppKit),Linux 使用 Skia/X11(GTK 或 Framebuffer)。支持 MVVM 与 Uno Extensions 的 MVUX 模式,提供 FeedView 等绑定方式;支持条件 XAML 与 partial 类处理平台差异;支持热重载。
使用方式:选择合适模板创建项目,共享代码放在主项目,各平台 head 项目(如 MyApp.Wasm、MyApp.Mobile、MyApp.Skia.Gtk、MyApp.Skia.WPF、MyApp.Windows)分别承载目标平台。视图保持简单,逻辑放入 ViewModel;平台相关代码用 partial 类或 #if 处理。可用 Uno.Extensions 配置主机、本地化、导航与 MVUX。
适用场景:需要一套代码覆盖 Web、移动与桌面的 .NET 应用,追求跨平台一致 UI/UX,并允许在必要时做平台特定优化。
限制与注意:应避免在共享代码中写平台代码、忽略 Skia 渲染差异、假设 WPF API 全部存在、XAML 过重(WASM 上较慢)以及同步加载导致 UI 冻结。性能上建议使用虚拟化列表、延迟加载资源、简化 XAML、使用编译绑定,WASM 下减少互操作调用、用 InvokeAsync 做 JS 互操作并考虑 AOT。需在所有目标平台测试,确认无仅限 WPF/UWP 的 API 且无回退方案。具体安装命令与收费信息暂未提供。