Sdílet prostřednictvím


Katalog RID .NET

Identifikátor RID je zkratka pro identifikátor modulu runtime. Hodnoty identifikátorů RID se používají k identifikaci cílových platforem, ve kterých aplikace běží. Balíčky .NET je používají k reprezentaci prostředků specifických pro platformu v balíčcích NuGet. Následující hodnoty jsou příklady identifikátorů RID: linux-x64, win-x64nebo osx-x64. Pro balíčky s nativními závislostmi identifikátor RID určuje, na kterých platformách lze balíček obnovit.

Jeden identifikátor RID lze nastavit v elementu <RuntimeIdentifier> souboru projektu. Více identifikátorů RID lze definovat jako seznam oddělený středníkem v elementu <RuntimeIdentifiers> souboru projektu. Používají se také pomocí možnosti --runtime s následujícími příkazy .NET CLI:

Identifikátory RID, které představují konkrétní operační systémy, se obvykle řídí tímto vzorem: [os].[version]-[architecture]-[additional qualifiers] kde:

  • [os] je moniker operačního systému nebo platformy. Například ubuntu.

  • [version] je verze operačního systému ve formě čísla verze oddělené tečkou (.). Například 15.10.

    Verze by neměla být marketingová verze, protože marketingové verze často představují více diskrétních verzí operačního systému s různou plochou rozhraní API platformy.

  • [architecture] je architektura procesoru. Například: x86, x64, armnebo arm64.

  • [additional qualifiers] dále rozlišovat různé platformy. Například: aot.

Graf identifikátorů RID

Graf RID nebo záložní graf modulu runtime je seznam identifikátorů RID, které jsou vzájemně kompatibilní.

Tyto identifikátory RID jsou definovány v PortableRuntimeIdentifierGraph.json v dotnet/runtime úložišti. V tomto souboru vidíte, že všechny RIDy, kromě toho základního, obsahují "#import" příkaz. Tyto výrazy označují kompatibilní identifikátory RID.

Před .NET 8 byly identifikátory RID specifické pro konkrétní verze a distribuce pravidelně přidány do souboru runtime.json , který se nachází v dotnet/runtime úložišti. Tento graf se už neaktualizuje a existuje jako možnost zpětné kompatibility. Vývojáři by měli používat identifikátory RID, které nejsou specifické pro konkrétní verzi a nesouvisejí s distribucí.

Když NuGet obnoví balíčky, pokusí se najít přesnou shodu pro zadaný modul runtime. Pokud se přesná shoda nenajde, NuGet vrátí graf zpět, dokud nenajde nejbližší kompatibilní systém podle grafu IDENTIFIKÁTORŮ RID.

Následující příklad představuje skutečnou položku identifikátoru RID osx-x64:

"osx-x64": {
    "#import": [ "osx", "unix-x64" ]
}

Výše uvedený identifikátor RID určuje, že osx-x64 importuje unix-x64. Takže když NuGet obnoví balíčky, pokusí se najít přesnou shodu pro osx-x64 v balíčku. Pokud NuGet nemůže najít konkrétní runtime, může například obnovit balíčky, které určují unix-x64 runtimes.

Následující příklad ukazuje mírně větší RID graf definovaný rovněž v souboru runtime.json :

    linux-arm64     linux-x64
         |     \   /     |
         |     linux     |
         |       |       |
    unix-arm64   |    unix-x64
             \   |   /
               unix
                 |
                any

Případně můžete pomocí nástroje RidGraph snadno vizualizovat graf RID (nebo libovolnou podmnožinu grafu).

Všechna RIDs se nakonec namapují zpět na kořenový any RID.

Při práci s nimi je potřeba vzít v úvahu některé důležité informace o identifikátorech RID:

  • Nepokoušejte se parsovat identifikátory RID, abyste získali jejich komponenty.

  • Použijte identifikátory RID, které jsou už definované pro platformu.

  • Identifikátory RID musí být specifické, takže nepředpokládejte nic ze skutečné hodnoty identifikátoru RID.

  • Nevystavujte identifikátory RID programově, pokud to není nezbytně nutné.

    Některé aplikace musí programově vypočítat identifikátory RID. Pokud ano, vypočítané identifikátory RID musí přesně odpovídat katalogu, včetně psaní malými a velkými písmeny. Identifikátory RID s různým formátem písmen by způsobovaly problémy, pokud operační systém rozlišuje velikost písmen, např. Linux, protože hodnota se často používá při vytváření objektů, jako jsou výstupní cesty. Představte si například vlastního průvodce publikováním v sadě Visual Studio, který spoléhá na informace z správce konfigurace řešení a vlastností projektu. Pokud konfigurace řešení předá neplatnou hodnotu, ARM64 například místo arm64, může vést k neplatnému identifikátoru RID, například win-ARM64.

Použití identifikátorů RID

Abyste mohli používat identifikátory RID, musíte vědět, které identifikátory RID existují. Nejnovější a kompletní verzi najdete v PortableRuntimeIdentifierGraph.json v dotnet/runtime úložišti.

Doporučenou volbou jsou identifikátory RID, které jsou považovány za přenosné – to znamená, že nejsou svázané s konkrétní verzí nebo distribucí operačního systému. To znamená, že přenosné identifikátory RID by se měly používat pro sestavení aplikace specifické pro platformu a vytvoření balíčku NuGet s prostředky specifickými pro identifikátory RID.

Počínaje verzí .NET 8 je výchozím chováním sady .NET SDK a modulu runtime pouze zvažovat nespecifické RIDs bez ohledu na verzi a distribuci. Během sestavování a obnovování SDK používá menší přenosný graf RID. Vrátí RuntimeInformation.RuntimeIdentifierplatformu, pro kterou byl modul runtime vytvořen. Za běhu rozhraní .NET najde prostředky specifické pro identifikátory RID pomocí známé sady přenosných identifikátorů RID. Při vytváření aplikace s prostředky specifickými pro identifikátory RID, které mohou být ignorovány za běhu, sada SDK vygeneruje upozornění: NETSDK1206.

Načítání prostředků pro konkrétní verzi operačního systému nebo jeho distribuci

.NET se už nepokouší poskytovat celkovou podporu pro řešení závislostí specifických pro verzi nebo distribuci operačního systému. Pokud vaše aplikace nebo balíček potřebuje načíst různé prostředky na základě verze nebo distribuce operačního systému, měla by implementovat logiku pro podmíněné načtení prostředků.

Pokud chcete získat informace o platformě, použijte System.OperatingSystem rozhraní API. Ve Windows a macOS Environment.OSVersion vrátí verzi operačního systému. V Linuxu to může být verze jádra – získání názvu distribuce Linuxu a informací o verzi, doporučeným přístupem je přečíst soubor /etc/os-release .

.NET poskytuje různé body rozšíření pro přizpůsobení logiky načítání, například NativeLibrary.SetDllImportResolver(Assembly, DllImportResolver), AssemblyLoadContext.ResolvingUnmanagedDll, AssemblyLoadContext.Resolving a AppDomain.AssemblyResolve. Ty se dají použít k načtení assetu odpovídajícího aktuální platformě.

Známé identifikátory RID

Následující seznam ukazuje malou podmnožinu nejběžnějších identifikátorů RID používaných pro každý operační systém. Nejnovější a kompletní verzi najdete v PortableRuntimeIdentifierGraph.json v dotnet/runtime úložišti.

Identifikátory RID systému Windows

  • win-x64
  • win-x86
  • win-arm64

Další informace naleznete v tématu Instalace .NET ve Windows.

Identifikátory RID pro Linux

  • linux-x64 (Většina desktopových distribucí, jako je CentOS Stream, Debian, Fedora, Ubuntu a deriváty)
  • linux-musl-x64 (Lehké distribuce využívající musl jako Alpine Linux)
  • linux-musl-arm64 (Používá se k sestavení Dockerových obrazů pro 64bitovou architekturu Arm v8 a minimalistické základní obrazy)
  • linux-arm (Linuxové distribuce běžící na Arm, jako je Raspbian, na Raspberry Pi Model 2+)
  • linux-arm64 (Linuxové distribuce běžící na 64bitovém Arm, jako je Ubuntu Server 64bit na modelu Raspberry Pi 3+)
  • linux-bionic-arm64 (Distribuce používající bionic libc Androidu, například Termux)
  • linux-loongarch64 (Linuxové distribuce běžící na LoongArch64)

Další informace najdete v tématu Závislosti a požadavky .NET.

identifikátory RID pro macOS

Identifikátory RID pro macOS používají starší značku OSX.

  • osx-x64 (Minimální verze operačního systému je macOS 10.12 Sierra)
  • osx-arm64

Další informace najdete v tématu Závislosti a požadavky .NET.

Identifikátory RID pro iOS

  • ios-arm64
  • iossimulator-arm64
  • iossimulator-x64

Identifikátory RID Androidu

  • android-arm64
  • android-arm
  • android-x64
  • android-x86

Viz také