Environment.OSVersion mengembalikan versi sistem operasi yang benar

Environment.OSVersion mengembalikan versi aktual sistem operasi (OS) alih-alih, misalnya, OS yang dipilih untuk kompatibilitas aplikasi.

Deskripsi perubahan

Dalam versi .NET sebelumnya, Environment.OSVersion mengembalikan versi OS yang mungkin salah saat aplikasi berjalan di bawah mode kompatibilitas Windows. Untuk informasi selengkapnya, lihat Komentar fungsi GetVersionExA. Di macOS, Environment.OSVersion mengembalikan versi kernel Darwin yang mendasar.

Mulai dari .NET 5, Environment.OSVersion mengembalikan versi aktual sistem operasi untuk Windows dan macOS.

Tabel berikut ini memperlihatkan perbedaan perilaku.

Versi .NET sebelumnya .NET 5+
Windows 6.2.9200.0 10.0.19042.0
macOS 19.6.0.0 10.15.7

Alasan untuk berubah

Pengguna properti ini mengharapkannya untuk mengembalikan versi aktual sistem operasi. Sebagian besar aplikasi .NET tidak menentukan versi yang didukung dalam manifes aplikasi mereka, dan dengan demikian mendapatkan versi default yang didukung dari host dotnet. Akibatnya, shim kompatibilitas jarang bermakna untuk aplikasi yang berjalan. Ketika Windows merilis versi baru dan host dotnet yang lebih lama masih digunakan, aplikasi ini mungkin mendapatkan versi OS yang salah. Mengembalikan versi aktual lebih sejalan dengan ekspektasi pengembang terhadap API ini.

Dengan pengenalan OperatingSystem.IsWindowsVersionAtLeast, , OperatingSystem.IsMacOSVersionAtLeastdan System.Runtime.Versioning.SupportedOSPlatformAttribute di .NET 5, Environment.OSVersion diubah menjadi konsisten untuk Windows dan macOS.

Versi yang diperkenalkan

5.0

Tinjau dan uji kode apa pun yang menggunakan Environment.OSVersion untuk memastikan kode tersebut berulah sesuai keinginan.

API yang Terpengaruh