RuntimeIdentifier 返回运行时所针对的平台

RuntimeInformation.RuntimeIdentifier 返回生成运行时的平台,而不是在运行时计算的值。

以前的行为

该值是通过 OS 文件或 API 计算的运行时标识符(RID)。 这通常意味着它是版本特定和发行版特定的运行时标识符 (RID)。 例如,当在 Windows 11 上运行应用程序时,该值为 win10-x64,而在 Ubuntu 20.04 上则可能为 ubuntu.20.04-x64

新行为

从 .NET 8 开始,该值是为其生成了运行时的 RID。 这意味着,对于运行时的便携式构建(所有Microsoft提供的构建),该值既不是版本特定的,也不是发行版特定的。 例如,Windows 11 win-x64上的值为,在 Ubuntu 20.04 上,它是 linux-x64。 对于非可移植版本构建(源代码构建),构建过程将设置一个可以包含版本和发行版的构建 RID,该值是返回的 RID。

已引入的版本

.NET 8 RC 1

破坏性变更的类型

此更改为行为更改

更改原因

此更改与 .NET 8 对特定于 RID 的资产解析的更改以及从发行版感知运行时的转变保持一致。 RuntimeInformation.RuntimeIdentifier 是一个不透明值,它应表示主机或运行时认为自己要在其上运行的平台。 在 .NET 8 中,它对应于为其生成了主机或运行时的平台,而不是在运行时计算的 RID。

RuntimeInformation.RuntimeIdentifier 是一个不透明的值,不打算解析为其组件部分。 对于运行应用程序的实际计算机的 OS 版本,请使用 Environment.OSVersion。 有关说明,请使用 RuntimeInformation.OSDescription。 对于 Linux 上的特定 ID(发行版)和相应版本,可以读取 os-release 文件。

受影响的 API

另请参阅