c# - Windows 运行时组件和 ApiInformation.IsTypePresent
问题描述
我有一个 C# Windows 运行时组件项目。它具有最低 Windows 版本 X,并针对 Windows 版本 Z。
在内部,它用于ApiInformation.IsTypePresent(NewType)
检测出现在 Windows 版本 Z 中的新类型,并在可用时使用它。
现在我有一个使用上一个项目的 C# 通用 Windows 应用程序。如果我将应用程序项目设置为最小 windows X,并以 windows Z 为目标,一切都会按预期工作。
但是,如果我将应用程序项目设置为最低版本 X,并且目标版本 Y(不包含新类型):
- 应用程序编译。
- 在 Windows 版本 Z 机器上运行,
ApiInformation.IsTypePresent(NewType)
返回true
很好。
但是,当我实际尝试使用该新类型时,在 Debug(未选中 .NET Native)下,我得到一个异常:
找不到 Windows 运行时类型“NewType”。
在 Release 下(检查了 .NET Native),显然找到了该类型,但是在调用它的方法时出现异常:
方法“NewType.Method()”未包含在编译中,但在“...”中被引用 可能缺少程序集。
我需要对组件项目做些什么,以便应用程序消费者不必针对 Windows Z 吗?该项目的全部意义在于它是应用程序消费者可以使用的兼容层。如果存在新类型,则使用它,否则使用旧类型。
解决方案
推荐阅读
- vba - 是否可以使用 VBA 自定义类的有状态默认实例?
- php - 转义电子邮件主题行
- javascript - 在桌面 safari 上以 50% 的边框半径修剪角落的字体真棒图标
- unity3d - GameObject 对象默认可以为空吗?
- python - 删除张量以优化 python 中的 for 循环
- python - Want to add the text kg’s after accepting weight input
- python - 电子邮件验证 - 特殊字符“dit”Python 2.7
- angular - 带有 href 数据绑定的 SVG 已更新,但不显示新图像
- python - Pygame中自上而下游戏的滚动相机
- javascript - 尝试使用多个浏览器 - 语音转文本