.NET-RID-Katalog

RID ist die Kurzform für Runtime Identifier (Runtimebezeichner). Mithilfe von RID-Werten werden Zielplattformen identifiziert, unter der die Anwendung ausgeführt wird. Sie werden von .NET-Paketen verwendet, um plattformspezifische Ressourcen in NuGet-Paketen darzustellen. Die folgenden Werte sind Beispiele für RIDs: linux-x64, ubuntu.14.04-x64, win7-x64 oder osx.10.12-x64. Für die Pakete mit nativen Abhängigkeiten legt die RID fest, auf welchen Plattformen das Paket wiederhergestellt werden kann.

Eine einzelne RID kann im <RuntimeIdentifier>-Element Ihrer Projektdatei festgelegt werden. Mehrere RIDs können als Liste mit Semikolon als Trennzeichen im <RuntimeIdentifiers>-Element der Projektdatei definiert werden. Sie können auch über die Option --runtime mit den folgenden .NET-CLI-Befehlen verwendet werden:

RIDs, die konkrete Betriebssysteme darstellen, weisen in der Regel folgendes Muster auf: [os].[version]-[architecture]-[additional qualifiers], wobei:

  • [os] ist der Moniker des Betriebs-/Plattformsystems. Beispielsweise ubuntu.

  • [version] ist die Version des Betriebssystems in Form einer durch Punkte getrennten (.) Versionsnummer. Beispielsweise 15.10.

    Die Version sollte keine Marketingversion sein, da Marketingversionen häufig mehrere separate Versionen des Betriebssystems mit unterschiedlichen Plattform-API-Oberflächen darstellen.

  • [architecture] ist die Prozessorarchitektur. Beispielsweise x86, x64, arm oder arm64.

  • [additional qualifiers] differenziert die verschiedenen Plattformen noch stärker. Beispiel: aot.

RID-Diagramm

Das RID-Diagramm oder Runtimefallbackdiagramm ist eine Liste von RIDs, die miteinander kompatibel sind. Die RIDs werden im Paket Microsoft.NETCore.Platforms definiert. Die Liste der unterstützten RIDs und das RID-Diagramm finden Sie in der Datei runtime.json im dotnet/runtime-Repository. In dieser Datei können Sie sehen, dass alle RIDs außer der Basis-RID eine "#import"-Anweisung enthalten. Diese Anweisungen geben kompatible RIDs an.

Bei NuGet-Wiederherstellungspaketen wird versucht, eine genaue Übereinstimmung für die angegebene Runtime zu finden. Wenn keine genaue Übereinstimmung gefunden wird, durchläuft das NuGet erneut das Diagramm, bis es das System mit der größten Kompatibilität gemäß dem RID-Diagramm findet.

Im Folgenden wird ein Beispiel für den tatsächlichen Eintrag für die osx.10.12-x64-RID vorgestellt:

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

Die oben genannte RID gibt an, dass osx.10.12-x64osx.10.11-x64 importiert. Bei NuGet-Wiederherstellungspaketen wird daher versucht, eine genaue Übereinstimmung für osx.10.12-x64 im Paket zu finden. Wenn NuGet die angegebene Runtime nicht finden kann, können Pakete wiederhergestellt werden, die z. B. osx.10.11-x64-Runtimes angeben.

Das folgende Beispiel zeigt ein etwas größeres RID-Diagramm, das auch in der Datei runtime.json definiert ist:

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

Alle RIDs bilden schließlich wieder den Stamm any-RID ab.

Es gibt einige Aspekte zu RIDs, die Sie bei der Verwendung bedenken müssen:

  • Versuchen Sie nicht, RIDs zu analysieren, um Komponententeile abzurufen.

  • Verwenden Sie RIDs, die bereits für die Plattform definiert sind.

  • Die RIDs müssen spezifisch sein. Leiten Sie daher keine Annahmen anhand des tatsächlichen RID-Werts ab.

  • Erstellen Sie RIDs nicht programmgesteuert, es sei denn, es ist unbedingt erforderlich.

    Einige Apps müssen RIDs programmgesteuert berechnen. In diesem Fall müssen die berechneten RIDs genau mit dem Katalog übereinstimmen, einschließlich der Groß- und Kleinschreibung. RIDs mit unterschiedlicher Groß- und Kleinschreibung würden Probleme verursachen, wenn beim Betriebssystem (z. B. unter Linux) die Groß-/Kleinschreibung beachtet wird, da der Wert häufig beim Erstellen von Elementen wie Ausgabepfaden verwendet wird. Nehmen wir einen benutzerdefinierten Veröffentlichungs-Assistenten in Visual Studio als Beispiel, der auf Informationen aus dem Projektmappenkonfigurations-Manager und den Projekteigenschaften basiert. Wenn die Projektmappenkonfiguration einen ungültigen Wert übergibt, z. B. ARM64 anstelle von arm64, kann dies zu einer ungültigen RID führen, z. B. win-ARM64.

Die Verwendung von RIDs

Um RIDs verwenden zu können, müssen Sie wissen, welche RIDs es gibt. Zur Plattform werden regelmäßig neue Werte hinzugefügt. Prüfen Sie die Datei runtime.json im dotnet/runtime-Repository auf die neueste und vollständige Version.

RIDs, die nicht an eine bestimmte Version oder Betriebssystemdistribution gebunden sind, sind die bevorzugte Wahl, insbesondere bei mehreren Linux-Distributionen, da die meisten Distributions-RIDs den nicht distributionsspezifischen RIDs zugeordnet sind.

Die folgende Liste enthält eine kleine Untergruppe der am häufigsten verwendeten RIDs für jedes Betriebssystem.

RIDs für Windows

Nur allgemeine Werte werden aufgeführt. Prüfen Sie die Datei runtime.json im dotnet/runtime-Repository auf die neueste und vollständige Version.

  • Windows, nicht versionsspezifisch
    • win-x64
    • win-x86
    • win-arm64
  • Windows 7 / Windows Server 2008 R2
    • win7-x64
    • win7-x86
  • Windows 8.1 / Windows Server 2012 R2
    • win81-x64
    • win81-x86
  • Windows 11/Windows Server 2022/Windows 10/Windows Server 2016
    • win10-x64
    • win10-x86
    • win10-arm64

Es gibt keine win11-RIDs. Verwenden Sie win10-RIDs für Windows 11. Weitere Informationen finden Sie unter .NET-Abhängigkeiten und -Anforderungen.

RIDs für Linux

Nur allgemeine Werte werden aufgeführt. Prüfen Sie die Datei runtime.json im dotnet/runtime-Repository auf die neueste und vollständige Version. Geräte, die unter einer nicht aufgeführten Distribution ausgeführt werden, funktionieren möglicherweise mit einer der nicht distributionsspezifischen RIDs. Beispielsweise können Raspberry Pi-Geräte, die unter einer nicht aufgeführten Linux-Distribution ausgeführt werden, mit linux-arm erreicht werden.

  • Linux, nicht distributionsspezifisch
    • linux-x64 (Die meisten Desktopdistributionen wie CentOS, Debian, Fedora, Ubuntu und Ableitungen)
    • linux-musl-x64 (Einfache Distributionen mit musl wie Alpine Linux)
    • linux-arm (Linux-Distributionen, die auf ARM basieren, wie Raspbian auf Raspberry Pi Model 2 und höher)
    • linux-arm64 (Linux-Distributionen, die auf 64-Bit-ARM basieren, wie Ubuntu Server mit 64 Bit auf Raspberry Pi Model 3 und höher)
  • Red Hat Enterprise Linux
    • rhel-x64 (Ersetzt durch linux-x64 für RHEL ab Version 6)
    • 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

Weitere Informationen finden Sie unter .NET-Abhängigkeiten und -Anforderungen.

Relative IDs für macOS

Relative IDs für macOS verwenden das ältere Branding „OSX“. Nur allgemeine Werte werden aufgeführt. Prüfen Sie die Datei runtime.json im dotnet/runtime-Repository auf die neueste und vollständige Version.

  • macOS, nicht versionsspezifisch
    • osx-x64 (Mindestversion des Betriebssystems ist 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

Weitere Informationen finden Sie unter .NET-Abhängigkeiten und -Anforderungen.

iOS-RIDs

Nur allgemeine Werte werden aufgeführt. Prüfen Sie die Datei runtime.json im dotnet/runtime-Repository auf die neueste und vollständige Version.

  • iOS, nicht versionsspezifisch
    • 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-RIDs

Nur allgemeine Werte werden aufgeführt. Prüfen Sie die Datei runtime.json im dotnet/runtime-Repository auf die neueste und vollständige Version.

  • Android, nicht versionsspezifisch
    • 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

Siehe auch