Školení
Postup výuky
Vytváření distribuovaných aplikací pomocí .NET Aspire - Training
Naučte se vytvářet pozorovatelné, připravené produkční a distribuované aplikace pomocí .NET Aspire.
Tento prohlížeč se už nepodporuje.
Upgradujte na Microsoft Edge, abyste mohli využívat nejnovější funkce, aktualizace zabezpečení a technickou podporu.
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-x64
nebo 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é prostřednictvím --runtime
možnosti s následujícími příkazy rozhraní příkazového řádku .NET:
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
, arm
nebo arm64
.
[additional qualifiers]
diferencovat různé platformy. Například: aot
.
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 identifikátory RID s výjimkou základního souboru obsahují "#import"
příkaz. Tyto příkazy 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 osx-x64
RID:
"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
balíček. Pokud NuGet nemůže najít konkrétní modul runtime, může například obnovit balíčky, které určují unix-x64
moduly runtime.
Následující příklad ukazuje mírně větší graf IDENTIFIKÁTORů RID definovaný také v souboru runtime.json :
linux-arm64 linux-arm32
| \ / |
| 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 identifikátory RID se nakonec namapuje zpět na kořenové any
identifikátory 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 za účelem načtení částí součástí.
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ě velikosti velikosti a velikosti. Identifikátory RID s různými písmeny by způsobovaly problémy, když je operační systém citlivý na velká a malá písmena, například Linux, protože hodnota se často používá při vytváření věcí, 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
.
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 rozhraním .NET 8 je výchozím chováním sady .NET SDK a modulu runtime pouze zvážení konkrétních verzí a nerekonstruovaných identifikátorů RID. Při obnovování a sestavování používá sada SDK menší přenosný graf IDENTIFIKÁTORů RID. Vrátí RuntimeInformation.RuntimeIdentifier platformu, pro kterou byl modul runtime vytvořen. V době 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.
.NET se už nepokouší poskytovat prvotřídní podporu pro překlad 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í , NativeLibrary.SetDllImportResolver(Assembly, DllImportResolver)například , AssemblyLoadContext.ResolvingUnmanagedDll, AssemblyLoadContext.Resolvinga AppDomain.AssemblyResolve. Ty se dají použít k načtení prostředku odpovídajícího aktuální platformě.
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.
win-x64
win-x86
win-arm64
Další informace naleznete v tématu Instalace .NET ve Windows.
linux-x64
(Většina desktopových distribucí, jako je CentOS Stream, Debian, Fedora, Ubuntu a deriváty)linux-musl-x64
(Lightweight distributions using musl like Alpine Linux)linux-musl-arm64
(Používá se k sestavení imagí Dockeru pro 64bitové image Arm v8 a minimalistické základní image)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 armu, jako je Ubuntu Server 64bitová verze na Raspberry Pi Model 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 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.
ios-arm64
iossimulator-arm64
iossimulator-x64
android-arm64
android-arm
android-x64
android-x86
Zpětná vazba k produktu .NET
.NET je open source projekt. Vyberte odkaz pro poskytnutí zpětné vazby:
Školení
Postup výuky
Vytváření distribuovaných aplikací pomocí .NET Aspire - Training
Naučte se vytvářet pozorovatelné, připravené produkční a distribuované aplikace pomocí .NET Aspire.