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

另请参阅