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.IsMacOSVersionAtLeast和 System.Runtime.Versioning.SupportedOSPlatformAttribute 之後, Environment.OSVersion 已變更為與 Windows 和 macOS 一致。
推出的版本
5.0
建議的動作
檢閱並測試使用 Environment.OSVersion 的程式碼,以確保其行為符合需求。