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.IsWindowsVersionAtLeast、OperatingSystem.IsMacOSVersionAtLeast 和 System.Runtime.Versioning.SupportedOSPlatformAttribute,Environment.OSVersion 已更改为与 Windows 和 macOS 一致。
引入的版本
5.0
建议操作
查看和测试使用 Environment.OSVersion 的任何代码,以确保其行为符合预期。
受影响的 API
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈