已移除 .NET 中對 Windows 運行時(WinRT) API 使用的內建支援。
推出的版本
5.0
變更描述
先前,CoreCLR 可以使用 Windows 元數據 (WinMD) 檔案 來啟用和使用 WinRT 類型。 從 .NET 5 開始,CoreCLR 無法再直接取用 WinMD 檔案。
如果您試著參考不支援的元件,您將會收到 FileNotFoundException。 如果您啟用 WinRT 類別,您將會收到PlatformNotSupportedException。
這項重大變更的原因如下:
- 因此,WinRT 可以與 .NET 運行時間分開開發和改善。
- 為了與其他作業系統(例如 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。