已從 .NET 移除對 WinRT 的內建支援

已移除 .NET 中對 Windows 執行階段 (WinRT) API 耗用量的內建支援。

導入的版本

5.0

變更描述

先前,CoreCLR 可以取用 Windows 中繼資料 (WinMD) 檔案來啟用並取用 WinRT 類型。 從 .NET 5 開始,CoreCLR 無法再直接取用 WinMD 檔案。

如果您嘗試參考不支援的組件,您會收到 FileNotFoundException。 如果您啟用 WinRT 類別,您將會收到 PlatformNotSupportedException

做出此中斷性變更的原因如下:

  • 為了讓 WinRT 可以與 .NET 執行階段分開開發及改善。
  • 為了與針對其他作業系統 (例如 iOS 與 Android) 所提供的 Interop 系統對稱。
  • 為了利用其他 .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