.NET RID カタログ

RID はランタイム識別子の略です。 RID の値は、アプリケーションが実行されている対象プラットフォームの識別に使用されます。 これは NuGet パッケージのプラットフォーム固有のアセットを表すために、.NET パッケージによって使用されます。 RID は、たとえば linux-x64ubuntu.14.04-x64win7-x64、または osx.10.12-x64 などの値です。 ネイティブ依存関係のあるパッケージの場合、パッケージを復元できるプラットフォームが RID によって指定されます。

プロジェクト ファイルの <RuntimeIdentifier> 要素では、1 つの RID を設定できます。 複数の RID は、プロジェクト ファイルの <RuntimeIdentifiers> 要素でセミコロン区切りのリストとして定義できます。 以下の .NET CLI コマンド--runtime オプションで使用することもできます。

具体的なオペレーティング システムを表す RID は通常、[os].[version]-[architecture]-[additional qualifiers] のようなパターンになります。それぞれ、次のような意味があります。

  • [os] はオペレーティング システムまたはプラットフォーム システムのモニカーです。 たとえば、ubuntu のようにします。

  • [version] は、オペレーティング システムのバージョンをドット区切りの形式 (.) で表したバージョン番号です。 たとえば、15.10 のようにします。

    バージョンはマーケティング バージョンにしないでください。マーケティング バージョンは、プラットフォームの API アクセス領域が異なる、オペレーティング システムの複数の個別バージョンを表すことがよくあるためです。

  • [architecture] はプロセッサ アーキテクチャです。 たとえば x86x64arm または arm64 などです。

  • [additional qualifiers] はさまざまなプラットフォームをさらに区別します。 たとえば、aot のように指定します。

RID グラフ

RID グラフまたはランタイム フォールバック グラフとは、相互に互換性のある RID の一覧です。 RID は Microsoft.NETCore.Platforms パッケージで定義されています。 サポートされている RID および RID グラフの一覧は、dotnet/runtime リポジトリにある runtime.json ファイルで確認できます。 このファイルでは、基本となる 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-x64osx.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 など) に問題が発生する原因となります。この値は、出力パスなどを作成するときに使用されることが多いためです。 たとえば、ソリューション構成マネージャーとプロジェクトのプロパティからの情報に依存する、Visual Studio のカスタム発行ウィザードを考えてみましょう。 たとえば、ソリューション構成から無効な値 (たとえば、arm64 の代わりに ARM64) が渡された場合、win-ARM64 などの無効な RID が生成されるおそれがあります。

RID の使用

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 (Alpine Linux など、musl を使用している軽量ディストリビューション)
    • linux-arm (Raspberry Pi Model 2+ 上の Raspbian など、Arm で実行されている Linux ディストリビューション)
    • linux-arm64 (Raspberry Pi Model 3+ 上の Ubuntu Server 64 ビットなど、64 ビット Arm で実行されている Linux ディストリビューション)
  • 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/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
  • macOS 13 Ventura
    • osx.13-x64
    • osx.13-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

関連項目