WPF .NET Core 5.0应用无法调用Windows.Services.Store解决方案问询
解决方案
- 首先修改你的WPF项目文件,保留目标框架配置为
<TargetFramework>net5.0-windows10.0.19041.0</TargetFramework>,同时新增两个配置节点:
该配置会把应用最低支持的系统版本降到Windows 7,同时保留对高版本WinRT API的引用权限,直接解决之前构建成功但无法启动的问题。<SupportedOSPlatformVersion>7.0</SupportedOSPlatformVersion> <RuntimeIdentifiers>win-x86;win-x64;win-arm64</RuntimeIdentifiers> - 移除你之前安装的
Microsoft.Windows.SDK.Contracts和Microsoft.Windows.CsWinRTNuGet包,.NET 5+的带Windows版本后缀的TFM已经内置了WinRT API的调用支持,不需要额外安装这些包,反而会引发版本冲突。 - 所有调用
Windows.Services.Store相关接口的代码,都要先做操作系统版本判断,只有当系统版本高于等于Windows 10 1709(内部版本号16299)的时候才执行相关逻辑,Win7系统下直接跳过这部分功能,代码示例:if (Environment.OSVersion.Version >= new Version(10, 0, 16299, 0)) { // 在这里写调用Windows.Services.Store的逻辑 } else { // Win7或者低版本Win10下的降级逻辑,比如跳过内购、商店评级等功能 } - 不需要把WPF项目转成UWP,直接使用Windows应用打包项目(MSIX)对你的现有WPF项目进行打包即可,打包时需要把应用的身份标识(包括发布者名称、应用ID)和你在微软合作伙伴中心注册的应用信息保持完全一致,否则
Windows.Services.Store接口会调用失败。 - 调试
Windows.Services.Store相关逻辑时,不能直接启动WPF的exe调试,需要启动MSIX打包项目进行调试,或者将应用旁加载到系统并关联商店身份后再测试,直接运行裸exe无法获取到商店上下文,接口调用会返回错误。
内容的提问来源于stack exchange,提问作者Nelson Henrique
相关产品推荐
相关产品推荐

