Xamarin Forms UWP使用AppWindow打开多窗口报类未注册异常求助
Xamarin.Forms UWP 独立窗口功能“类未注册异常”修复指南
针对使用AppWindow实现独立窗口时,调用AppWindow.TryCreateAsync抛出类未注册异常的场景,可通过以下步骤逐一排查修复:
- 校验UWP项目版本适配
AppWindow系列API仅在 Windows 10 1903(Build 18362)及以上 系统版本中完成COM类注册。如果UWP项目配置的最低支持版本低于18362,运行时会因无法找到对应系统类直接抛出异常。
调整路径:右键UWP项目 → 属性 → 应用配置页 → 将“最低版本”设置为10.0.18362.0及以上,重新编译部署即可。 - 检查SDK引用匹配度
旧版本Xamarin.Forms.UWP项目模板默认引用的Windows SDK包版本偏低,未包含AppWindow相关的类注册元数据,需要在UWP项目的引用配置中补充匹配当前目标版本的Windows SDK引用包。 - 确认调用线程上下文
AppWindow.TryCreateAsync要求必须在应用主UI线程上下文中执行,如果在后台异步任务、非UI线程发起窗口创建请求,系统会因找不到关联的UI上下文触发类注册校验失败。可通过Xamarin.Forms提供的Device.BeginInvokeOnMainThread将创建窗口的逻辑切回主线程执行。 - 检查发布配置的裁剪、混淆规则
如果项目发布时开启了IL裁剪、代码混淆配置,可能会误将AppWindow相关的系统类引用裁剪,触发类未注册异常。需要在混淆规则中补充对应系统命名空间的保留配置,避免裁剪过程丢失类注册信息。 - 修正窗口初始化逻辑
补充初始化流程中的必要上下文绑定,避免窗口创建阶段的校验异常,参考正确实现逻辑:if (appWindow == null) { appWindow = await AppWindow.TryCreateAsync(); Frame appWindowFrame = new Frame(); appWindowFrame.Navigate(typeof(testpage)); ElementCompositionPreview.SetAppWindowContent(appWindow, appWindowFrame); // 补充基础尺寸配置,完成窗口与视图的绑定校验 appWindow.Resize(new Windows.Foundation.Size(800, 600)); } await appWindow.TryShowAsync();
内容的提问来源于stack exchange,提问作者sameer
相关产品推荐
相关产品推荐

