删除了对使用 .NET 中的 Windows 运行时 (WinRT) API 的内置支持。
已引入的版本
5.0
更改描述
以前,CoreCLR 可以使用 Windows 元数据 (WinMD) 文件 来激活和使用 WinRT 类型。 从 .NET 5 开始,CoreCLR 无法再直接使用 WinMD 文件。
如果尝试引用不受支持的程序集,你将获得一个 FileNotFoundException。 如果激活 WinRT 类,则会收到 PlatformNotSupportedException。
此重大变更的原因如下:
- 因此,可以独立于 .NET 运行时开发和改进 WinRT。
- 为了与为其他操作系统(例如 iOS 和 Android)提供的互操作系统对称。
- 为了利用其他 .NET 功能,例如 C# 功能、中间语言 (IL) 剪裁和预先 (AOT) 编译。
- 简化 .NET 运行时代码库。
建议的措施
删除对 Microsoft.Windows.SDK.Contracts 包的引用。 请改为指定要通过
TargetFramework项目属性访问的 Windows API 版本。 例如:<TargetFramework>net5.0-windows10.0.19041.0</TargetFramework>如果要使用 .winmd 文件中定义的第三方运行时组件,请添加对 Microsoft.Windows.CsWinRT NuGet 包的引用。 有关如何生成 C# 投影的信息,请参阅 C#/WinRT 文档。
有关详细信息,请参阅 在桌面应用中调用 Windows 运行时 API。