已从 .NET 中删除对 WinRT 的内置支持
已删除对使用 .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。