You need to enable JavaScript to run this app. Xamarin Forms UWP使用AppWindow打开多窗口报类未注册异常求助
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.28 15:06:08