关于.NET 5、WinUI 3打包桌面应用可调用WinRT API的两类技术问题咨询
关于打包桌面应用API与WinUI 3 + .NET 5应用API的问题解答
问题1:2019年4月发布的补充API列表的更新与未来规划
- 是否随2019年11月版本更新变化?
是的,这份列表在2019年11月的Windows SDK更新中确实有调整。微软当时结合开发者反馈和平台迭代,对可被打包桌面应用调用的API集合进行了扩充和优化,移除了部分兼容性不佳的API,同时新增了一批实用接口。 - 是否存在更新版本?
当然,后续每个Windows SDK的主要版本(比如20H2、21H1等)都会更新这个API集合,而且现在微软已经将这类API的支持信息整合到了官方API文档中,你可以直接在单个API的文档页面查看它是否支持打包桌面应用场景,不用再依赖单独的列表了。 - 未来是否会进一步扩充?
肯定会。微软一直在完善桌面桥(Desktop Bridge)的能力,随着Windows平台的迭代,会持续将更多实用的Windows Runtime API开放给打包桌面应用,尤其是那些能提升桌面应用现代化体验的接口。
问题2:WinUI 3 + .NET 5打包应用中未在该列表的API状态与支持情况
- 这些API的状态是什么?
项目中能看到的这些API主要分为三类:- 第一类是官方后续新增支持的API:2019年的列表只是当时的补充,之后微软通过SDK更新开放了更多API,比如你提到的
Windows.Graphics.Printing.PrintTaskRequest就属于这类,已经被纳入正式支持范围。 - 第二类是UWP专属但兼容可用的API:像
Windows.ApplicationModel.SuspendingOperation这类UWP生命周期相关的API,打包桌面应用虽然能调用,但要注意桌面应用的生命周期逻辑和UWP不同,调用这类API可能不会有和UWP应用完全一致的行为,比如桌面应用不会自动触发挂起事件,需要你手动处理相关逻辑。 - 第三类是临时兼容的API:部分API可能是因为技术实现原因暂时能被调用,但并未经过官方兼容性验证,这类API存在后续版本被限制的风险。
- 第一类是官方后续新增支持的API:2019年的列表只是当时的补充,之后微软通过SDK更新开放了更多API,比如你提到的
- 是否可以自由调用?
建议优先选择官方文档明确标注支持打包桌面应用的API,比如PrintTaskRequest这类通用功能API可以放心调用;对于UWP专属的生命周期类API,如果你清楚桌面应用和UWP在该场景下的差异,并且有针对性的适配逻辑,也可以使用,但要做好充分测试;对于未标注支持的API,不建议在生产环境中使用,避免后续版本兼容性问题。 - 未来是否会持续得到支持?
微软会持续支持桌面桥场景下的API,当WinUI 3全面支持UWP之后,那些属于Windows Runtime通用层的API(比如打印相关的PrintTaskRequest)会继续得到支持;而UWP专属的API,只要能和桌面应用场景适配,也会保留支持,但如果某些API只适用于UWP的特定生命周期或机制,可能会针对桌面应用场景做调整,或者提供更适合桌面应用的替代方案。
内容的提问来源于stack exchange,提问作者sjb-sjb
相关产品推荐
相关产品推荐

