.NET RID 目錄

RID 是運行 時間識別碼的簡短專案。 RID 值是用來識別應用程式執行所在的目標平台。 .NET 套件會使用它們來代表 NuGet 套件中的平台特定資產。 下列值是 RID 的範例:linux-x64ubuntu.14.04-x64win7-x64osx.10.12-x64。 針對具有原生相依性的套件,RID 也可指定能在哪些平台上還原套件。

單一 RID 可在您專案檔的 <RuntimeIdentifier> 元素中設定。 可以在專案檔的 <RuntimeIdentifiers> 元素中,將多個 RID 定義為以分號分隔的清單。 它們也會透過 --runtime 選項搭配下列 .NET CLI 命令使用:

代表具體作業系統的 RID 通常遵循 [os].[version]-[architecture]-[additional qualifiers] 這個模式,其中:

  • [os] 是作業/平台系統 Moniker。 例如:ubuntu

  • [version] 是作業系統版本,使用以點分隔 (.) 的版本號碼表示。 例如:15.10

    版本 不應該 是行銷版本,因為行銷版本通常代表具有不同平臺 API 介面區之作業系統的多個離散版本。

  • [architecture] 處理器架構。 例如:x86x64armarm64

  • [additional qualifiers] 進一步區分不同平台。 例如:aot

RID 圖表

RID 圖表或執行階段後援圖形是與彼此相容的 RID 清單。 RID 是在 Microsoft.NETCore.Platforms 套件中定義。 您可以在 runtime.json 檔案中看到支援的 RID 清單和 RID 圖形,該檔案位於存放 dotnet/runtime 庫中。 在此檔案中,您可以看到所有 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 必須完全符合目錄,包括大小寫。 具有不同大小寫的 RID 會在 OS 區分大小寫時造成問題,例如 Linux,因為當建構輸出路徑之類的專案時,通常會使用此值。 例如,請考慮 Visual Studio 中的自訂發佈精靈,依賴方案組態管理員和專案屬性的資訊。 例如,如果解決方案組態傳遞不正確值, ARM64 而不是 arm64 ,可能會導致不正確 RID,例如 win-ARM64

使用 RID

若要使用 RID,必須先了解有哪些 RID 存在。 新的值會定期新增至平台。 如需最新的完整版本,請參閱存放庫中的 dotnet/runtimeruntime.json檔案。

未系結至特定版本或 OS 散發套件的 RID 是慣用的選擇,特別是處理多個 Linux 散發版本時,因為大部分的發行版本 RID 都會對應至非散發特定 RID。

下列清單顯示用於每個 OS 的一小部分最常見 RID。

Windows RID

僅列出常見值。 如需最新的完整版本,請參閱存放庫中的 dotnet/runtimeruntime.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;請使用 win10 RID 進行Windows 11。 如需詳細資訊,請參閱 .NET 相依性和需求

Linux RID

僅列出常見值。 如需最新的完整版本,請參閱存放庫中的 dotnet/runtimeruntime.json檔案。 執行下列散發套件的裝置可能會與其中一個非散發特定 RID 搭配使用。 例如,如果 Raspberry Pi 裝置執行未列出的 Linux 發行版本,則可以 linux-arm 為目標。

  • Linux,而非散發特定
    • linux-x64 (CentOS、Debian、Fedora、Ubuntu 和衍生) 等大部分桌面散發套件
    • linux-musl-x64 (使用 musl 的輕量發行版本,如 Alpine Linux)
    • linux-arm (在 Arm 上執行的 Linux 發行版本,例如 Raspberry Pi 模型 2+)
    • linux-arm64 (在 64 位 Arm 上執行的 Linux 發行版本,例如 Raspberry Pi 模型 3+ 上的 Ubuntu Server 64 位)
  • Red Hat Enterprise Linux
    • rhel-x64 (RHEL 6 版以上已由 linux-x64 取代)
    • rhel.6-x64
  • Tizen
    • tizen
    • tizen.4.0.0
    • tizen.5.0.0
    • tizen.5.5.0
    • tizen.6.0.0
    • tizen.6.5.0
    • tizen.7.0.0

如需詳細資訊,請參閱 .NET 相依性和需求

macOS RID

macOS RID 使用較舊的 "OSX" 商標。 僅列出常見值。 如需最新的完整版本,請參閱存放庫中的 dotnet/runtimeruntime.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/runtimeruntime.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/runtimeruntime.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

另請參閱