已从 .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

受影响的 API