.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. Beispielsweiseubuntu
.[version]
ist die Version des Betriebssystems in Form einer durch Punkte getrennten (.
) Versionsnummer. Beispielsweise15.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. Beispielsweisex86
,x64
,arm
oderarm64
.[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-x64
osx.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 vonarm64
, 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 durchlinux-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