如何使用 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 Standard
的WPF
应用程序。
-
当我可以构建和运行整个解决方案时,错误消息如何表明
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) 应用程序?的主要内容,如果未能解决你的问题,请参考以下文章