Каталог идентификаторов сред выполнения (RID) в .NET Core.NET Core RID Catalog

RID — это сокращение от Runtime IDentifier (идентификатор среды выполнения).RID is short for Runtime IDentifier. Идентификаторы RID служат для идентификации целевых платформ, на которых выполняется приложение.RID values are used to identify target platforms where the application runs. Они используются пакетами .NET для представления ресурсов, специфичных для платформы, в пакетах NuGet.They're used by .NET packages to represent platform-specific assets in NuGet packages. Некоторые примеры идентификаторов RID: linux-x64, ubuntu.14.04-x64, win7-x64 или osx.10.12-x64.The following values are examples of RIDs: linux-x64, ubuntu.14.04-x64, win7-x64, or osx.10.12-x64. Для пакетов с собственными зависимостями они указывают, на каких платформах можно восстановить пакет.For the packages with native dependencies, the RID designates on which platforms the package can be restored.

Один идентификатор RID можно задать в элементе <RuntimeIdentifier> вашего файла проекта.A single RID can be set in the <RuntimeIdentifier> element of your project file. Несколько идентификаторов RID можно определить в виде списка, разделенного точкой с запятой, в элементе <RuntimeIdentifiers> файла проекта.Multiple RIDs can be defined as a semicolon-delimited list in the project file's <RuntimeIdentifiers> element. Они также используются с помощью параметра --runtime со следующими командами интерфейса командной строки .NET Core:They're also used via the --runtime option with the following .NET Core CLI commands:

Идентификаторы RID, представляющие отдельные операционные системы, обычно имеют следующий формат: [os].[version]-[architecture]-[additional qualifiers], где:RIDs that represent concrete operating systems usually follow this pattern: [os].[version]-[architecture]-[additional qualifiers] where:

  • [os] — это моникер платформы или операционной системы.[os] is the operating/platform system moniker. Например, ubuntu.For example, ubuntu.

  • [version] — это версия операционной системы в виде номера, разделенного точкой (.).[version] is the operating system version in the form of a dot-separated (.) version number. Например, 15.10.For example, 15.10.

    • Это не должен быть коммерческий номер версии, так как такой номер часто представляет отдельные версии операционной системы с различными контактными зонами API.The version shouldn't be marketing versions, as they often represent multiple discrete versions of the operating system with varying platform API surface area.
  • [architecture] — это архитектура процессора.[architecture] is the processor architecture. Например, x86, x64, arm или arm64.For example: x86, x64, arm, or arm64.

  • [additional qualifiers] дополнительно дифференцируют разные платформы.[additional qualifiers] further differentiate different platforms. Например, aot.For example: aot.

Схема RIDRID graph

Схема RID или резервная схема среды выполнения — это список идентификаторов RID, которые совместимы друг с другом.The RID graph or runtime fallback graph is a list of RIDs that are compatible with each other. Идентификаторы RID определены в пакете Microsoft.NETCore.Platforms.The RIDs are defined in the Microsoft.NETCore.Platforms package. Список поддерживаемых идентификаторов RID и схема RID содержатся в файле runtime.json, который находится в репозитории CoreFX.You can see the list of supported RIDs and the RID graph in the runtime.json file, which is located at the CoreFX repo. В этом файле можно увидеть, что все идентификаторы RID, кроме основного, содержат оператор "#import".In this file, you can see that all RIDs, except for the base one, contain an "#import" statement. Эти операторы указывают совместимые RID.These statements indicate compatible RIDs.

Когда NuGet восстанавливает пакеты, он пытается найти точное совпадение для указанной среды выполнения.When NuGet restores packages, it tries to find an exact match for the specified runtime. Если его не удается найти, NuGet проходит схему до тех пор, пока не найдет ближайшую совместимую систему в соответствии со схемой RID.If an exact match is not found, NuGet walks back the graph until it finds the closest compatible system according to the RID graph.

Ниже приведена запись для идентификатора RID osx.10.12-x64:The following example is the actual entry for the 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.The above RID specifies that osx.10.12-x64 imports osx.10.11-x64. Таким образом, когда NuGet восстанавливает пакеты, он пытается найти в пакете точное совпадение для osx.10.12-x64.So, when NuGet restores packages, it tries to find an exact match for osx.10.12-x64 in the package. Например, если NuGet не удается найти определенную среду выполнения, он может восстановить пакеты, которые определяют среды выполнения osx.10.11-x64.If NuGet cannot find the specific runtime, it can restore packages that specify osx.10.11-x64 runtimes, for example.

В следующем примере показана немного большая схема RID, которая также указана в файле runtime.json:The following example shows a slightly bigger RID graph also defined in the runtime.json file:

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

Все идентификаторы RID в конечном итоге сопоставляются с корневым идентификатором RID any.All RIDs eventually map back to the root any RID.

При работе с идентификаторами RID следует учитывать некоторые моменты:There are some considerations about RIDs that you have to keep in mind when working with them:

  • RID являются непрозрачными строками, и их следует рассматривать как "черные ящики".RIDs are opaque strings and should be treated as black boxes.
  • Не следует создавать идентификаторы RID программным способом.Don't build RIDs programmatically.
  • Используйте только те идентификаторы RID, которые уже определены для платформы.Use RIDs that are already defined for the platform.
  • Идентификаторы RID должны указываться точно. Предположения недопустимы.The RIDs need to be specific, so don't assume anything from the actual RID value.

Использование идентификаторов RIDUsing RIDs

Для использования идентификаторов RID необходимо знать, какие идентификаторы RID существуют.To be able to use RIDs, you have to know which RIDs exist. В платформу регулярно добавляются новые идентификаторы.New values are added regularly to the platform. Последнюю и полную версию см. в файле runtime.json в репозитории CoreFX.For the latest and complete version, see the runtime.json file on CoreFX repo.

SDK для .NET Core 2.0 представляет концепцию переносных идентификаторов RID..NET Core 2.0 SDK introduces the concept of portable RIDs. Это новые значения, добавленные в граф RID, которые не привязаны к конкретной версии или дистрибутиву ОС и рекомендуются для использования с .NET Core 2.0 и более поздних версий.They are new values added to the RID graph that aren't tied to a specific version or OS distribution and are the preferred choice when using .NET Core 2.0 and higher. Они особенно удобны во время работы с несколькими дистрибутивами Linux, так как большинство идентификаторов RID дистрибутивов сопоставлено с переносными идентификаторами RID.They're particularly useful when dealing with multiple Linux distros since most distribution RIDs are mapped to the portable RIDs.

Ниже представлена небольшая выборка наиболее распространенных RID, используемых для каждой ОС.The following list shows a small subset of the most common RIDs used for each OS.

Идентификаторы RID для WindowsWindows RIDs

Перечислены только распространенные значения.Only common values are listed. Последнюю и полную версию см. в файле runtime.json в репозитории CoreFX.For the latest and complete version, see the runtime.json file on CoreFX repo.

  • Переносные (.NET Core 2.0 или более поздние версии):Portable (.NET Core 2.0 or later versions)
    • win-x64
    • win-x86
    • win-arm
    • win-arm64
  • Windows 7 или Windows Server 2008 R2Windows 7 / Windows Server 2008 R2
    • win7-x64
    • win7-x86
  • Windows 8.1 или Windows Server 2012 R2Windows 8.1 / Windows Server 2012 R2
    • win81-x64
    • win81-x86
    • win81-arm
  • Windows 10 или Windows Server 2016Windows 10 / Windows Server 2016
    • win10-x64
    • win10-x86
    • win10-arm
    • win10-arm64

Дополнительные сведения см. в разделе Необходимые компоненты для .NET Core в Windows.See Prerequisites for .NET Core on Windows for more information.

Идентификаторы RID для LinuxLinux RIDs

Перечислены только распространенные значения.Only common values are listed. Последнюю и полную версию см. в файле runtime.json в репозитории CoreFX.For the latest and complete version, see the runtime.json file on CoreFX repo. Устройства с дистрибутивами, не перечисленными ниже, могут работать с одним из переносных идентификаторов RID.Devices running a distribution not listed below may work with one of the Portable RIDs. Например, для устройств Raspberry Pi с дистрибутивом Linux, которого нет в списке, можно использовать linux-arm.For example, Raspberry Pi devices running a Linux distribution not listed can be targeted with linux-arm.

  • Переносные (.NET Core 2.0 или более поздние версии):Portable (.NET Core 2.0 or later versions)
    • linux-x64 (большинство дистрибутивов для компьютеров, например CentOS, Debian, Fedora, Ubuntu и производные от них);linux-x64 (Most desktop distributions like CentOS, Debian, Fedora, Ubuntu and derivatives)
    • linux-musl-x64 (упрощенные дистрибутивы, которые используют musl, например Alpine Linux);linux-musl-x64 (Lightweight distributions using musl like Alpine Linux)
    • linux-arm (дистрибутивы Linux, которые работают на архитектуре ARM, например Raspberry Pi).linux-arm (Linux distributions running on ARM like Raspberry Pi)
  • Red Hat Enterprise LinuxRed Hat Enterprise Linux
    • rhel-x64 (заменен на linux-x64 для RHEL новее версии 6);rhel-x64 (Superseded by linux-x64 for RHEL above version 6)
    • rhel.6-x64 (.NET Core 2.0 или более поздние версии)rhel.6-x64 (.NET Core 2.0 or later versions)
  • Tizen (.NET Core 2.0 или более поздние версии)Tizen (.NET Core 2.0 or later versions)
    • tizen
    • tizen.4.0.0
    • tizen.5.0.0

Дополнительные сведения см. в разделе Необходимые компоненты для .NET Core в Linux.See Prerequisites for .NET Core on Linux for more information.

Относительные идентификаторы macOSmacOS RIDs

Относительные идентификаторы macOS используют старую фирменную символику "OSX".macOS RIDs use the older "OSX" branding. Перечислены только распространенные значения.Only common values are listed. Последнюю и полную версию см. в файле runtime.json в репозитории CoreFX.For the latest and complete version, see the runtime.json file on CoreFX repo.

  • Переносные (.NET Core 2.0 или более поздние версии):Portable (.NET Core 2.0 or later versions)
    • osx-x64 (минимальная версия — macOS 10.12 Sierra).osx-x64 (Minimum OS version is macOS 10.12 Sierra)
  • macOS 10.10 Yosemite:macOS 10.10 Yosemite
    • osx.10.10-x64
  • macOS 10.11 El Capitan:macOS 10.11 El Capitan
    • osx.10.11-x64
  • macOS 10.12 Sierra (.NET Core 1.1 или более поздние версии):macOS 10.12 Sierra (.NET Core 1.1 or later versions)
    • osx.10.12-x64
  • macOS 10.13 High Sierra (.NET Core 1.1 или более поздние версии):macOS 10.13 High Sierra (.NET Core 1.1 or later versions)
    • osx.10.13-x64
  • macOS 10.14 Mojave (.NET Core 1.1 или более поздние версии):macOS 10.14 Mojave (.NET Core 1.1 or later versions)
    • osx.10.14-x64

Дополнительные сведения см. в разделе Необходимые компоненты для .NET Core в macOS.See Prerequisites for .NET Core on macOS for more information.

См. такжеSee also