Delen via


Environment.OSVersion retourneert de juiste versie van het besturingssysteem

Environment.OSVersion retourneert de werkelijke versie van het besturingssysteem (OS) in plaats van bijvoorbeeld het besturingssysteem dat is geselecteerd voor toepassingscompatibiliteit.

Wijzigingsbeschrijving

In eerdere .NET-versies Environment.OSVersion wordt een versie van het besturingssysteem geretourneerd die mogelijk onjuist is wanneer een toepassing wordt uitgevoerd in de compatibiliteitsmodus van Windows. Zie opmerkingen van de functie GetVersionExA voor meer informatie. In macOS Environment.OSVersion wordt de onderliggende Darwin-kernelversie geretourneerd.

Vanaf .NET 5 wordt Environment.OSVersion de werkelijke versie van het besturingssysteem voor Windows en macOS geretourneerd.

In de volgende tabel ziet u het verschil in gedrag.

Vorige .NET-versies .NET 5+
Windows 6.2.9200.0 10.0.19042.0
MacOS 19.6.0.0 10.15.7

Reden voor wijziging

Gebruikers van deze eigenschap verwachten dat deze de werkelijke versie van het besturingssysteem retourneert. De meeste .NET-apps geven hun ondersteunde versie niet op in hun toepassingsmanifest en krijgen dus de standaard ondersteunde versie van de dotnet-host. Als gevolg hiervan is de compatibiliteitss-shim zelden zinvol voor de app die wordt uitgevoerd. Wanneer Windows een nieuwe versie publiceert en een oudere dotnet-host nog steeds in gebruik is, krijgen deze apps mogelijk een onjuiste versie van het besturingssysteem. Het retourneren van de werkelijke versie is meer inline met de verwachtingen van ontwikkelaars van deze API.

Met de introductie van OperatingSystem.IsWindowsVersionAtLeast, OperatingSystem.IsMacOSVersionAtLeasten System.Runtime.Versioning.SupportedOSPlatformAttribute in .NET 5, Environment.OSVersion is gewijzigd in consistent voor Windows en macOS.

Versie geïntroduceerd

5,0

Controleer en test alle code die wordt gebruikt Environment.OSVersion om ervoor te zorgen dat deze zich naar wens gedraagt.

Betrokken API's