共用方式為


Environment.OSVersion 會傳回正確的作系統版本

Environment.OSVersion會傳回作業系統(OS)的實際版本,而不是例如為應用程式相容性選擇的 OS。

變更描述

在先前的 .NET 版本中,Environment.OSVersion 傳回的作業系統版本在應用程式以 Windows 相容性模式執行時可能會不正確。 如需詳細資訊,請參閱 GetVersionExA 函式備註。 在macOS上, Environment.OSVersion 傳回基礎 Darwin 核心版本。

從 .NET 5 開始, Environment.OSVersion 會傳回 Windows 和 macOS作系統的實際版本。

下表顯示行為的差異。

舊版 .NET .NET 5+
Windows 作業系統 6.2.9200.0 10.0.19042.0
macOS 19.6.0.0 10.15.7

變更的原因

此屬性的用戶預期它會傳回作系統的實際版本。 大部分的 .NET 應用程式不會在其應用程式指令清單中指定其支援的版本,因此會從 dotnet 主機取得預設支援的版本。 因此,相容性填充碼對於執行的應用程式很少有意義。 當 Windows 發行新版本且較舊的 dotnet 主機仍在使用中時,這些應用程式可能會取得不正確的 OS 版本。 傳回實際版本更內嵌於開發人員對這個 API 的期望。

在 .NET 5 中 OperatingSystem.IsWindowsVersionAtLeast引進 、 OperatingSystem.IsMacOSVersionAtLeastSystem.Runtime.Versioning.SupportedOSPlatformAttribute 之後, Environment.OSVersion 已變更為與 Windows 和 macOS 一致。

推出的版本

5.0

檢閱並測試使用 Environment.OSVersion 的程式碼,以確保其行為符合需求。

受影響的 API