Dela via


Environment.OSVersion returnerar rätt operativsystemversion

Environment.OSVersion returnerar den faktiska versionen av operativsystemet (OS) i stället för till exempel det operativsystem som har valts för programkompatibilitet.

Ändra beskrivning

I tidigare .NET-versioner Environment.OSVersion returnerar en os-version som kan vara felaktig när ett program körs i Windows-kompatibilitetsläge. Mer information finns i GetVersionExA-funktionskommentarer. På macOS Environment.OSVersion returnerar den underliggande Darwin-kernelversionen.

Från och med .NET 5 Environment.OSVersion returnerar den faktiska versionen av operativsystemet för Windows och macOS.

I följande tabell visas skillnaden i beteende.

Tidigare .NET-versioner .NET 5+
Windows 6.2.9200.0 10.0.19042.0
macOS 19.6.0.0 10.15.7

Orsak till ändringen

Användare av den här egenskapen förväntar sig att den returnerar den faktiska versionen av operativsystemet. De flesta .NET-appar anger inte vilken version som stöds i programmanifestet och får därför den standardversion som stöds från dotnet-värden. Därför är kompatibilitetsshim sällan meningsfull för den app som körs. När Windows släpper en ny version och en äldre dotnet-värd fortfarande används kan dessa appar få en felaktig operativsystemversion. Att returnera den faktiska versionen stämmer bättre med utvecklarnas förväntningar på det här API:et.

I och med introduktionen av OperatingSystem.IsWindowsVersionAtLeast, OperatingSystem.IsMacOSVersionAtLeastoch System.Runtime.Versioning.SupportedOSPlatformAttribute i .NET 5 ändrades Environment.OSVersion till att vara konsekvent för Windows och macOS.

Version introducerad

5,0

Granska och testa all kod som använder Environment.OSVersion för att se till att den fungerar som du vill.

Berörda API:er