.NET RID 카탈로그

RID는 Runtime Identifier(런타임 식별자) 의 약어입니다. RID 값은 애플리케이션을 실행하는 대상 플랫폼을 식별하는 데 사용됩니다. NuGet 패키지에서 .NET 패키지의 플랫폼 관련 자산을 나타내는 데 사용됩니다. RID 값의 예로 linux-x64, ubuntu.14.04-x64, win7-x64, osx.10.12-x64 등을 들 수 있습니다. 기본 종속성이 있는 패키지의 경우 RID는 패키지를 복원할 수 있는 플랫폼을 지정합니다.

단일 RID는 프로젝트 파일의 <RuntimeIdentifier> 요소에 설정할 수 있습니다. 여러 RID는 프로젝트 파일의 <RuntimeIdentifiers> 요소에서 세미콜론으로 구분된 목록으로 정의할 수 있습니다. --runtime 옵션을 통해 다음과 같은 .NET CLI 명령에서도 사용됩니다.

구체적인 운영 체제를 나타내는 RID는 일반적으로 [os].[version]-[architecture]-[additional qualifiers]의 패턴을 따릅니다. 각각은 다음과 같습니다.

  • [os] - 운영 체제/플랫폼 모니커입니다. 예: ubuntu.

  • [version] - 점으로 구분된(.) 버전 번호 형식의 운영 체제 버전입니다. 예: 15.10.

    마케팅 버전은 종종 다양한 플랫폼 API 노출 영역이 있는 운영 체제의 여러 개별 버전을 나타내므로 버전은 마케팅 버전이 되어서는 안 됩니다.

  • [architecture] - 프로세서 아키텍처입니다. 예를 들면 x86, x64, arm, arm64 등입니다.

  • [additional qualifiers] - 다른 플랫폼을 추가로 구분합니다. 예를 들어 aot을 참조하십시오.

RID 그래프

RID 그래프 또는 런타임 Fallback 그래프는 서로 호환되는 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를 컴퓨팅해야 합니다. 그렇다면 계산된 RID는 대/소문자를 포함하여 카탈로그와 정확히 일치해야 합니다. 대/소문자가 다른 RID는 OS가 대/소문자를 구분할 때(예: Linux) 문제가 발생합니다. 출력 경로와 같은 항목을 생성할 때 값이 자주 사용되기 때문입니다. 예를 들어 솔루션 구성 관리자 및 프로젝트 속성의 정보를 사용하는 Visual Studio의 사용자 지정 게시 마법사를 생각해 보세요. 솔루션 구성이 잘못된 값(예 ARM64arm64: 대신)을 전달하는 경우와 같이 win-ARM64잘못된 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

RID가 없습니다win11. Windows 11 RID를 사용합니다win10. 자세한 내용은 .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 모델 2 이상에서 Raspbian과 같은 Arm에서 실행되는 Linux 배포판)
    • linux-arm64 (Raspberry Pi 모델 3 이상에서 Ubuntu Server 64비트처럼 64비트 Arm에서 실행되는 Linux 배포판)
  • Red Hat Enterprise Linux
    • rhel-x64 (버전 6보다 상위 RHEL의 경우 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

자세한 내용은 .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

참조