Environment.OSVersion 返回正确的操作系统版本

Environment.OSVersion 返回操作系统 (OS) 的实际版本,而不是为应用程序兼容性而选择的 OS。

更改描述

在以前的 .NET 版本中,当应用程序在 Windows 兼容模式下运行时,Environment.OSVersion 返回的 OS 版本可能不正确。 有关详细信息,请参阅 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.IsWindowsVersionAtLeastOperatingSystem.IsMacOSVersionAtLeastSystem.Runtime.Versioning.SupportedOSPlatformAttributeEnvironment.OSVersion 已更改为与 Windows 和 macOS 一致。

引入的版本

5.0

查看和测试使用 Environment.OSVersion 的任何代码,以确保其行为符合预期。

受影响的 API