Catalogo RID .NET

RID è breve per l'identificatore di runtime. I valori RID vengono usati per identificare le piattaforme di destinazione in cui viene eseguita l'applicazione e vengono usati dai pacchetti .NET per rappresentare risorse specifiche della piattaforma in pacchetti NuGet. I valori seguenti sono esempi di RID: linux-x64, ubuntu.14.04-x64, win7-x64 o osx.10.12-x64. Per i pacchetti con dipendenze native, il RID specifica le piattaforme su cui può essere ripristinato il pacchetto.

Un singolo RID può essere impostato nell'elemento <RuntimeIdentifier> del file di progetto. Più RID possono essere definiti come elenco delimitato da punto e virgola nell'elemento <RuntimeIdentifiers> del file di progetto. Vengono usati anche tramite l'opzione --runtime con i comandi dell'interfaccia della riga di comando di .NET seguenti:

I RID che rappresentano un sistema operativo reale seguono in genere il modello seguente: [os].[version]-[architecture]-[additional qualifiers] dove:

  • [os] è il moniker di sistema operativo/piattaforma. Ad esempio, ubuntu.

  • [version] è il numero di versione del sistema operativo nel formato separato da punti (.). Ad esempio, 15.10.

    La versione non deve essere una versione di marketing, perché le versioni di marketing spesso rappresentano più versioni discrete del sistema operativo con una superficie di attacco api della piattaforma variabile.

  • [architecture] indica l'architettura del processore, Ad esempio: x86, x64, arm o arm64.

  • [additional qualifiers] differenziano ulteriormente piattaforme diverse. Ad esempio: aot.

Grafico RID

Il grafico RID o grafico di fallback di runtime è un elenco di RID compatibili tra loro. I RID sono definiti nel pacchetto Microsoft.NETCore.Platforms. È possibile visualizzare l'elenco dei RID supportati e del grafico RID nel file runtime.json , che si trova nel dotnet/runtime repository. In questo file, si noterà che tutti i RID, ad eccezione di quello di base, contengono un'istruzione "#import". Queste istruzioni indicano RID compatibili.

Quando NuGet ripristina i pacchetti, tenta di trovare una corrispondenza esatta per il runtime specificato. Se non trova una corrispondenza esatta, NuGet ripercorre il grafico a ritroso fino a individuare il sistema compatibile più simile in base al grafico RID.

L'esempio seguente è la voce effettiva per il RID osx.10.12-x64:

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

Il RID sopra riportato specifica che osx.10.12-x64 importa osx.10.11-x64. Pertanto, quando NuGet ripristina i pacchetti, tenta di trovare una corrispondenza esatta per osx.10.12-x64 nel pacchetto. Se NuGet non riesce a trovare il runtime specifico, può ripristinare i pacchetti che specificano osx.10.11-x64 i runtime, ad esempio.

L'esempio seguente mostra un grafico RID leggermente più grande definito anche nel file runtime.json :

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

Tutti i RID finiscono per mappare nuovamente al RID any radice.

Esistono alcune considerazioni che è necessario tenere presenti quando si lavora con i RID:

  • Non provare ad analizzare i RID per recuperare le parti del componente.

  • Usare i RID già definiti per la piattaforma.

  • I RID devono essere specifici, quindi non desumere nulla dal valore RID effettivo.

  • Non compilare RID a livello di codice, a meno che non sia assolutamente necessario.

    Alcune app devono calcolare i RID a livello di codice. In tal caso, i RID calcolati devono corrispondere esattamente al catalogo, incluso l'inserimento di maiuscole e minuscole. I RID con maiuscole e minuscole diverse causano problemi quando il sistema operativo fa distinzione tra maiuscole e minuscole, ad esempio Linux, perché il valore viene spesso usato durante la costruzione di elementi come i percorsi di output. Si consideri ad esempio una procedura guidata di pubblicazione personalizzata in Visual Studio che si basa sulle informazioni fornite da Gestione configurazione soluzione e proprietà del progetto. Se la configurazione della soluzione passa un valore non valido, ad esempio, ARM64 anziché arm64, potrebbe generare un RID non valido, ad esempio win-ARM64.

Uso dei RID

Per usare i RID, è necessario sapere quali sono quelli disponibili. Alla piattaforma vengono regolarmente aggiunti nuovi valori. Per la versione più recente e completa, vedere il file runtime.json nel dotnet/runtime repository.

Le RID che non sono associate a una versione specifica o a una distribuzione del sistema operativo sono la scelta preferita, soprattutto quando si gestiscono più distribuzioni Linux, poiché la maggior parte dei RID di distribuzione è mappata ai RID non specifici della distribuzione.

L'elenco seguente mostra un piccolo subset dei RID più comuni usati per ogni sistema operativo.

RID Windows

Sono elencati solo i valori comuni. Per la versione più recente e completa, vedere il file runtime.json nel dotnet/runtime repository.

  • Windows, non specifico della versione
    • 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

Non sono win11 presenti RID; usare win10 i RID per Windows 11. Per altre informazioni, vedere Dipendenze e requisiti di .NET.

RID Linux

Sono elencati solo i valori comuni. Per la versione più recente e completa, vedere il file runtime.json nel dotnet/runtime repository. I dispositivi che eseguono una distribuzione non elencata di seguito possono funzionare con uno dei RID non specifici della distribuzione. Ad esempio, i dispositivi Raspberry Pi che eseguono una distribuzione di Linux non elencata possono essere assegnati a linux-arm.

  • Linux, non specifico della distribuzione
    • linux-x64 (La maggior parte delle distribuzioni desktop come CentOS, Debian, Fedora, Ubuntu e derivati)
    • linux-musl-x64 (Le distribuzioni leggere che usano musl come Alpine Linux)
    • linux-arm (Distribuzioni Linux in esecuzione su Arm come Raspbian in Raspberry Pi Model 2+)
    • linux-arm64 (Distribuzioni Linux in esecuzione su Arm a 64 bit come Ubuntu Server a 64 bit nel modello Raspberry Pi 3+)
    • linux-bionic-arm64 (Distribuzioni che usano la libreria bionic di Android, ad esempio Termux)
  • Red Hat Enterprise Linux
    • rhel-x64 (Sostituito da linux-x64 per RHEL versioni successive alla versione 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

Per altre informazioni, vedere Dipendenze e requisiti di .NET.

RID macOS

I RID macOS usano la personalizzazione "OSX" precedente. Sono elencati solo i valori comuni. Per la versione più recente e completa, vedere il file runtime.json nel dotnet/runtime repository.

  • macOS, non specifico della versione
    • osx-x64 (La versione minima del sistema operativo è 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

Per altre informazioni, vedere Dipendenze e requisiti di .NET.

RID iOS

Sono elencati solo i valori comuni. Per la versione più recente e completa, vedere il file runtime.json nel dotnet/runtime repository.

  • iOS, non specifico della versione
    • 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

RID Android

Sono elencati solo i valori comuni. Per la versione più recente e completa, vedere il file runtime.json nel dotnet/runtime repository.

  • Android, non specifico della versione
    • 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

Vedi anche