如何使用 XamlIslands 和桌面桥打包 WPF (.NET Core) 应用程序?

Posted

技术标签:

【中文标题】如何使用 XamlIslands 和桌面桥打包 WPF (.NET Core) 应用程序?【英文标题】:How to package a WPF (.NET Core) app with XamlIslands and Desktop Bridge? 【发布时间】:2021-04-20 12:55:07 【问题描述】:

我在WPF 中有一个针对.NET Core v3.1 的应用程序,并且我正在使用XamlIslands 来显示Windows 10 UI 组件。为了使用XamlIslands,我必须先将我的应用程序从.NET Framework 迁移到.NET Core

我将我的自定义UWP 组件放入UWP project,它以Win10 version 2004 为目标,最低版本为1903。在WPF 项目中,我可以使用XamlHosts 引用这些自定义UWP 组件。

然后,我有一个Desktop Bridge项目,可以打包WPF应用,可以上传到微软商店。

项目编译并运行正确,我什至可以运行打包项目,但是当我尝试创建一个侧载的应用程序包时,它给了我以下错误:

Project UWP is not compatible with netcoreapp3.1 (.NETCoreApp,Version=v3.1) / win-x64. Project UWP supports: uap10.0.18362 (UAP,Version=v10.0.18362)
Project UWP is not compatible with netcoreapp3.1 (.NETCoreApp,Version=v3.1). Project UWP supports: uap10.0.18362 (UAP,Version=v10.0.18362)

我尝试将UWP 应用程序的最低版本设置为windows 10, build 10240(这是最旧的),但出现了同样的错误(当然,更新后的 uap 版本)。

在this 答案中,我读到也许我应该创建一个.NET Standard 项目?但是没有办法创建针对.NET StandardWPF 应用程序。

    当我可以构建和运行整个解决方案时,错误消息如何表明UWP 应用程序与.netcore 不兼容?如果运行了,为什么不能创建 App Package? 我如何创建应用包,然后将其上传到应用商店?

【问题讨论】:

【参考方案1】:

如何使用 XamlIslands 和桥接器打包 WPF (.NET Core) 应用程序?

请参考Host a custom WinRT XAML control in a WPF app using XAML Islands官方文档。根据您的信息,您似乎尚未将解决方案配置为以specific platform 为目标,例如 x86 或 x64。以 Any CPU 为目标的项目不支持自定义 WinRT XAML 控件。 请不要忘记编辑您的 wpf 项目configuration

 <AssetTargetFallback>uap10.0.19041</AssetTargetFallback>

我已经制作了code sample,我可以根据以上步骤制作包,这里是官方代码示例,您可以下载并测试制作包。

【讨论】:

哦,非常感谢!我在每个项目中都只有 x64 和 x86 平台,但配置文件中缺少 AssetTargetFallback。添加它,解决了问题:)

以上是关于如何使用 XamlIslands 和桌面桥打包 WPF (.NET Core) 应用程序?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 WPF MSIX 应用程序(桌面桥)更改 Windows 10 颜色设置?

美化nwjs生成的桌面程序安装包

WPF 引用 UWP 控件 不打包为 MSIX 分发的方法

WPF 引用 UWP 控件 不打包为 MSIX 分发的方法

WPF 引用 UWP 控件 不打包为 MSIX 分发的方法

为啥 XamlIslands Image 控件不显示图像?