已從 .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。