Environment.OSVersion 傳回正確的作業系統版本
Environment.OSVersion 傳回作業系統的實際版本,而非為了應用程式相容性選取的 OS 等選項。
變更描述
在舊版 .NET 中,當應用程式在 Windows 相容性模式下執行時,Environment.OSVersion 會傳回可能不正確的 OS 版本。 如需詳細資訊,請參閱 GetVersionExA function 備註。 在 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 的所有程式碼,以確保其行為符合預期。
受影響的 API
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應