Rückgabe der korrekten Betriebssystemversion durch Environment.OSVersion

Environment.OSVersion gibt die tatsächliche Betriebssystemversion (OS) zurück, anstatt beispielsweise das Betriebssystem zurückzugeben, das für die Anwendungskompatibilität ausgewählt ist.

Änderungsbeschreibung

In früheren .NET-Versionen gibt Environment.OSVersion eine Betriebssystemversion zurück, die möglicherweise falsch ist, wenn eine Anwendung im Windows-Kompatibilitätsmodus ausgeführt wird. Weitere Informationen finden Sie in den Hinweisen zur GetVersionExA-Funktion. Unter macOS gibt Environment.OSVersion die zugrunde liegende Darwin-Kernelversion zurück.

Ab .NET 5 gibt Environment.OSVersion die tatsächliche Version des Windows- oder macOS-Betriebssystems zurück.

In der folgenden Tabelle werden die Verhaltensunterschiede aufgeführt.

Frühere .NET-Versionen .NET 5 und höher
Windows 6.2.9200.0 10.0.19042.0
macOS 19.6.0.0 10.15.7

Grund für die Änderung

Benutzer dieser Eigenschaft erwarten, dass die tatsächliche Version des Betriebssystems zurückgegeben wird. Die meisten .NET-Apps geben die unterstützte Version nicht im Anwendungsmanifest an und verwenden daher die standardmäßig unterstützte Version des dotnet-Hosts. Folglich ist der Kompatibilitätsshim für die ausgeführte App nur selten sinnvoll. Wenn Windows eine neue Version veröffentlicht und ein älterer dotnet-Host weiterhin verwendet wird, verwenden diese Apps möglicherweise eine falsche Betriebssystemversion. Die Rückgabe der tatsächlichen Version entspricht eher den Erwartungen der Entwickler dieser API.

Mit der Einführung von OperatingSystem.IsWindowsVersionAtLeast, OperatingSystem.IsMacOSVersionAtLeast und System.Runtime.Versioning.SupportedOSPlatformAttribute in .NET 5 wurde Environment.OSVersion geändert, um mehr Konsistenz für Windows und macOS einzuführen.

Eingeführt in Version

5.0

Überprüfen und testen Sie den von Environment.OSVersion verwendeten Code, um sicherzustellen, dass sich dieser wie gewünscht verhält.

Betroffene APIs