Dukungan bawaan untuk WinRT dihapus dari .NET
Dukungan bawaan untuk konsumsi API runtime Windows (WinRT) di .NET dihapus.
Versi yang diperkenalkan
5.0
Deskripsi perubahan
Sebelumnya, CoreCLR dapat menggunakan file metadata Windows (WinMD) untuk aktif dan menggunakan jenis WinRT. Mulai dari .NET 5, CoreCLR tidak dapat lagi menggunakan file WinMD secara langsung.
Jika Anda mencoba mereferensikan rakitan yang tidak didukung, Anda akan mendapatkan FileNotFoundException. Jika Anda mengaktifkan kelas WinRT, Anda akan mendapatkan PlatformNotSupportedException.
Perubahan yang melanggar ini dilakukan karena alasan berikut:
- Jadi WinRT dapat dikembangkan dan ditingkatkan secara terpisah dari runtime .NET.
- Untuk simetri dengan sistem interop yang disediakan untuk sistem operasi lain, seperti iOS dan Android.
- Untuk memanfaatkan fitur .NET lainnya, seperti fitur C#, pemangkasan bahasa perantara (IL), dan kompilasi ahead-of-time (AOT).
- Untuk menyederhanakan basis kode runtime .NET.
Tindakan yang direkomendasikan
Hapus referensi ke paket Microsoft.Windows.SDK.Contracts. Sebagai gantinya, tentukan versi API Windows yang ingin Anda akses melalui
TargetFramework
properti proyek. Misalnya:<TargetFramework>net5.0-windows10.0.19041.0</TargetFramework>
Jika Anda menggunakan komponen runtime pihak ketiga yang ditentukan dalam file .winmd , tambahkan referensi ke paket NuGet Microsoft.Windows.CsWinRT. Untuk informasi tentang cara menghasilkan proyeksi C#, lihat dokumentasi C#/WinRT .
Untuk informasi selengkapnya, lihat Memanggil WINDOWS Runtime API di aplikasi desktop.