.NET RID 目录

RID 是运行时标识符的缩写。 RID 值用于标识应用程序运行所在的目标平台。 .NET 包使用它们来表示 NuGet 包中特定于平台的资产。 以下值是 RID 的示例:linux-x64ubuntu.14.04-x64win7-x64osx.10.12-x64。 对于具有本机依赖项的包,RID 将指定在其中可以还原包的平台。

可以在项目文件的 <RuntimeIdentifier> 元素中设置一个 RID。 可以将多个 RID 定义为项目文件的 <RuntimeIdentifiers> 元素中的列表(以分号分隔)。 也可使用以下 .NET CLI 命令 通过 --runtime 选项使用它们:

表示具体操作系统的 RID 通常遵循以下模式:[os].[version]-[architecture]-[additional qualifiers],其中:

  • [os] 是操作系统/平台系统名字对象。 例如 ubuntu

  • [version] 是操作系统版本,使用的格式是以点 (.) 分隔的版本号。 例如 15.10

    版本不应为营销版本,因为营销版本通常代表该操作系统的多个离散版本,且具有不同的平台 API 外围应用。

  • [architecture] 是处理器体系结构。 例如:x86x64armarm64

  • [additional qualifiers] 进一步区分了不同的平台。 例如:aot

RID 图表

RID 图表或运行时回退图表是互相兼容的 RID 列表。 Microsoft.NETCore.Platforms 包中定义了 RID。 可以在 dotnet/runtime 存储库的 runtime.json 文件中查看支持的 RID 列表和 RID 图表。 在此文件中,可以看到除基 RID 以外的所有 RID 均包含 "#import" 语句。 这些语句指示的是兼容的 RID。

NuGet 还原包时,它将尝试找到指定运行时的完全匹配项。 如果未找到完全匹配项,NuGet 将返回此图表,直至它根据 RID 图表找到最相近的兼容系统。

以下示例是 osx.10.12-x64 RID 的实际条目:

"osx.10.12-x64": {
    "#import": [ "osx.10.12", "osx.10.11-x64" ]
}

上述 RID 指定 osx.10.12-x64 导入 osx.10.11-x64。 因此,当 NuGet 还原包时,它将尝试找到包中的 osx.10.12-x64 的完全匹配项。 例如,如果 NuGet 找不到特定的运行时,它可以还原用于指定 osx.10.11-x64 运行时的包。

以下示例演示了 runtime.json 文件中定义的另一个略大的 RID 图表:

    win7-x64    win7-x86
       |   \   /    |
       |   win7     |
       |     |      |
    win-x64  |  win-x86
          \  |  /
            win
             |
            any

所有 RID 最终都会映射回根 any RID。

使用 RID 时,必须牢记以下几个注意事项:

  • 请勿尝试分析 RID 来检索组件部分。

  • 使用已为平台定义的 RID。

  • RID 必须具有特定性,因此请勿通过实际的 RID 值假定任何情况。

  • 除非绝对必要,否则不要以编程方式生成 RID。

    某些应用需要以编程方式计算 RID。 如果是这样,计算的 RID 必须与目录完全匹配,包括大小写。 如果 OS 区分大小写(例如 Linux),则具有不同大小写的 RID 会导致问题,因为在构造输出路径等内容时,通常会使用该值。 例如,请考虑 Visual Studio 中的自定义发布向导,该向导依赖于解决方案配置管理器和项目属性中的信息。 如果解决方案配置传递无效值,例如 ARM64,而不是 arm64,则可能会导致 RID 无效,例如 win-ARM64

使用 RID

若要使用 RID,必须知道有哪些 RID。 新值将定期添加到该平台。 若要获取最新的完整版,请参阅 dotnet/runtime 存储库中的 runtime.json 文件。

未绑定到特定版本或 OS 发行版的 RID 是优先选择,尤其是在处理多个 Linux 发行版时,因为大多数发行版 RID 映射到非特定于发行版的 RID。

以下列表显示了一小部分用于每个 OS 的最常见 RID。

Windows RID

仅列出了公共值。 若要获取最新的完整版,请参阅 dotnet/runtime 存储库中的 runtime.json 文件。

  • 非特定于版本的 Windows
    • win-x64
    • win-x86
    • win-arm
    • win-arm64
  • Windows 7 / Windows Server 2008 R2
    • win7-x64
    • win7-x86
  • Windows 8.1 / Windows Server 2012 R2
    • win81-x64
    • win81-x86
    • win81-arm
  • Windows 11/Windows Server 2022/Windows 10/Windows Server 2016
    • win10-x64
    • win10-x86
    • win10-arm
    • win10-arm64

没有 win11 RID;在 Windows 11 中使用 win10 RID。 有关详细信息,请参阅 .NET 依赖项和要求

Linux RID

仅列出了公共值。 若要获取最新的完整版,请参阅 dotnet/runtime 存储库中的 runtime.json 文件。 运行以下未列出的发行版的设备可能适用于其中一个非特定于发行版的 RID。 例如,可以将运行未列出的 Linux 发行版的 Raspberry Pi 设备定向为使用 linux-arm

  • 非特定于分发版的 Linux
    • linux-x64(大多数桌面发行版,如 CentOS、Debian、Fedora、Ubuntu 及派生版本)
    • linux-musl-x64(使用 musl 的轻量级发行版,如 Alpine Linux)
    • linux-arm(在 ARM 上运行的 Linux 发行版本,如 Raspberry Pi Model 2 及更高版本上的 Raspbian)
    • linux-arm64(在 64 位 ARM 上运行的 Linux 发行版本,如 Raspberry Pi Model 3 及更高版本上的 Ubuntu 服务器 64 位)
  • Red Hat Enterprise Linux
    • rhel-x64(被 linux-x64 取代,适用于 RHEL 6 以上版本)
    • rhel.6-x64
  • Tizen
    • tizen
    • tizen.4.0.0
    • tizen.5.0.0

有关详细信息,请参阅 .NET 依赖项和要求

macOS RID

macOS RID 使用较早的“OSX”品牌。 仅列出了公共值。 若要获取最新的完整版,请参阅 dotnet/runtime 存储库中的 runtime.json 文件。

  • 非特定于版本的 macOS
    • osx-x64(最低 OS 版本为 macOS 10.12 Sierra)
  • macOS 10.10 Yosemite
    • osx.10.10-x64
  • macOS 10.11 El Capitan
    • osx.10.11-x64
  • macOS 10.12 Sierra
    • osx.10.12-x64
  • macOS 10.13 High Sierra
    • osx.10.13-x64
  • macOS 10.14 Mojave
    • osx.10.14-x64
  • macOS 10.15 Catalina
    • osx.10.15-x64
  • macOS 11.0 Big Sur
    • osx.11.0-x64
    • osx.11.0-arm64
  • macOS 12 Monterey
    • osx.12-x64
    • osx.12-arm64

有关详细信息,请参阅 .NET 依赖项和要求

iOS RID

仅列出了公共值。 若要获取最新的完整版,请参阅 dotnet/runtime 存储库中的 runtime.json 文件。

  • 非特定于版本的 iOS
    • ios-arm64
  • iOS 10
    • ios.10-arm64
  • iOS 11
    • ios.11-arm64
  • iOS 12
    • ios.12-arm64
  • iOS 13
    • ios.13-arm64
  • iOS 14
    • ios.14-arm64
  • iOS 15
    • ios.15-arm64

Android RID

仅列出了公共值。 若要获取最新的完整版,请参阅 dotnet/runtime 存储库中的 runtime.json 文件。

  • 非特定于版本的 Android
    • android-arm64
  • Android 21
    • android.21-arm64
  • Android 22
    • android.22-arm64
  • Android 23
    • android.23-arm64
  • Android 24
    • android.24-arm64
  • Android 25
    • android.25-arm64
  • Android 26
    • android.26-arm64
  • Android 27
    • android.27-arm64
  • Android 28
    • android.28-arm64
  • Android 29
    • android.29-arm64
  • Android 30
    • android.30-arm64
  • Android 31
    • android.31-arm64
  • Android 32
    • android.32-arm64

请参阅