Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
A RID a futtatókörnyezet azonosítójának rövidítése. A RID-értékek az alkalmazás által futtatott célplatformok azonosítására szolgálnak.
A .NET-csomagok platformspecifikus objektumokat jelölnek a NuGet-csomagokban. A következő értékek példák a következő azonosítókra: linux-x64, win-x64vagy osx-x64.
A natív függőségekkel rendelkező csomagok esetében a RID meghatározza, hogy a csomag mely platformokon állítható vissza.
A projektfájl elemében <RuntimeIdentifier> egyetlen RID állítható be. Több RID is definiálható pontosvesszővel tagolt listaként a projektfájl elemében <RuntimeIdentifiers> . Az alábbi --runtime is használhatók:
- dotnet build
- dotnet clean
- dotnet pack
- dotnet publish
- dotnet-visszaállítás
- dotnet-futtatás
- dotnet store
A konkrét operációs rendszereket képviselő RID-k általában ezt a mintát követik: [os].[version]-[architecture]-[additional qualifiers] ahol:
[os]az operációs/platformrendszer-moniker. Például:ubuntu.[version]az operációs rendszer verziója ponttól elválasztott (.) verziószám formájában. Például:15.10.A verzió nem lehet marketingverzió, mivel a marketingverziók gyakran az operációs rendszer több különálló verzióját képviselik különböző platform API felülettel.
[architecture]a processzorarchitektúra. Például:x86,x64,armvagyarm64.[additional qualifiers]a különböző platformok további megkülönböztetése. Például:aot
RID-diagram
A RID-gráf vagy a futtatókörnyezet tartalék gráfja az egymással kompatibilis RID-k listája.
Ezek a RIDs a PortableRuntimeIdentifierGraph.jsondotnet/runtime adattárban vannak definiálva. Ebben a fájlban láthatja, hogy az összes RID az alapszintű kivételével tartalmaz egy utasítást "#import" . Ezek az utasítások kompatibilis RID-ket jeleznek.
A .NET 8 előtt a rendszer rendszeresen hozzáadta a verzióspecifikus és disztribúcióspecifikus RID-ket az adattárban dotnet/runtime találhatóruntime.jsonfájlhoz. Ez a gráf már nem frissül, és visszamenőleges kompatibilitási lehetőségként létezik. A fejlesztőknek nem verzióspecifikus és nem disztribúciós azonosítókat kell használniuk.
Amikor a NuGet visszaállítja a csomagokat, megpróbálja megtalálni a megadott futtatókörnyezet pontos egyezését. Ha nem talál pontos egyezést, a NuGet visszavezeti a gráfot, amíg meg nem találja a legközelebbi kompatibilis rendszert a RID-gráf szerint.
A következő példa a RID tényleges bejegyzése osx-x64 :
"osx-x64": {
"#import": [ "osx", "unix-x64" ]
}
A fenti RID az importálást osx-x64unix-x64határozza meg. Így amikor a NuGet visszaállítja a csomagokat, megpróbál pontos egyezést osx-x64 találni a csomagban. Ha a NuGet nem találja az adott futtatókörnyezetet, visszaállíthatja például a futtatókörnyezeteket meghatározó unix-x64 csomagokat.
Az alábbi példa egy kissé nagyobb RID-gráfot mutat be, amely szintén a runtime.json fájlban van definiálva:
linux-arm64 linux-x64
| \ / |
| linux |
| | |
unix-arm64 | unix-x64
\ | /
unix
|
any
Másik lehetőségként a RidGraph eszközzel egyszerűen megjelenítheti a RID-gráfot (vagy a gráf bármely részhalmazát).
Az összes RID végül vissza van képezve a gyökér any RID-hez.
A biztonsági azonosítókkal kapcsolatban figyelembe kell vennie néhány szempontot, amelyeket figyelembe kell vennie a velük végzett munka során:
Ne próbálja elemezni a RID-ket az összetevők lekéréséhez.
Használja a platformhoz már definiált RID-ket.
Az azonosítóknak konkrétaknak kell lenniük, ezért ne feltételezz semmit a tényleges RID-értékből.
Ne hozzon létre riD-ket programozott módon, hacsak nem feltétlenül szükséges.
Egyes alkalmazásoknak programozott módon kell kiszámítaniuk a RID-ket. Ha igen, a kiszámított RID-knek pontosan meg kell egyeznie a katalógussal, beleértve a burkolatot is. A különböző burkolattal rendelkező RID-k problémákat okozhatnak, ha az operációs rendszer megkülönbözteti a kis- és nagybetűket, például Linux esetén, mivel az értéket gyakran használják a kimeneti útvonalak létrehozásakor. Vegyük például egy egyéni közzétételi varázslót a Visual Studióban, amely a megoldáskonfiguráció-kezelő és a projekttulajdonságok információira támaszkodik. Ha a megoldáskonfiguráció érvénytelen értéket ad át, például ahelyett
ARM64,arm64hogy érvénytelen RID-t eredményezne, példáulwin-ARM64.
RID-k használata
A RID-k használatához tudnia kell, hogy mely azonosítók léteznek. A legújabb és teljes verzióért tekintse meg a adattárban található dotnet/runtime fájlt.
A "hordozhatónak" minősülő , azaz nem egy adott verzióhoz vagy operációsrendszer-disztribúcióhoz kapcsolódó RID-k ajánlottak. Ez azt jelenti, hogy hordozható RID-ket kell használni egy platformspecifikus alkalmazás létrehozásához és egy NuGet-csomag létrehozásához RID-specifikus eszközökkel.
A .NET 8-tól kezdve a .NET SDK és a futtatókörnyezet alapértelmezett viselkedése csak a nem verzióspecifikus és a nem disztribúcióspecifikus RID-k figyelembe kérése. A visszaállítás és az építés során az SDK egy kisebb hordozható RID-gráfot használ. A RuntimeInformation.RuntimeIdentifierfüggvény azt a platformot adja vissza, amelyhez a futtatókörnyezet készült. Futásidőben a .NET rid-specifikus objektumokat keres egy ismert hordozható RID-készlet használatával. Amikor olyan, RID-specifikus objektumokat tartalmazó alkalmazást hoz létre, amely futásidőben figyelmen kívül hagyható, az SDK figyelmeztetést küld: NETSDK1206.
Eszközök betöltése adott operációsrendszer-verzióhoz vagy -disztribúcióhoz
A .NET már nem próbál első osztályú támogatást nyújtani az operációs rendszer verziójára vagy terjesztésére vonatkozó függőségek feloldásához. Ha az alkalmazásnak vagy a csomagnak különböző eszközöket kell betöltenie az operációs rendszer verziója vagy terjesztése alapján, az eszközök feltételes betöltéséhez implementálnia kell a logikát.
A platformmal kapcsolatos információk beszerzéséhez használja System.OperatingSystem az API-kat. Windows és macOS Environment.OSVersion rendszeren az operációs rendszer verzióját adja vissza. Linuxon ez lehet a kernel verziója – a Linux disztribúció nevének és verzióadatainak lekéréséhez ajánlott a /etc/os kiadási fájl olvasása.
A .NET különböző bővítménypontokat biztosít a betöltési logika testreszabásához – NativeLibrary.SetDllImportResolver(Assembly, DllImportResolver)például , , AssemblyLoadContext.ResolvingUnmanagedDllAssemblyLoadContext.Resolvingés AppDomain.AssemblyResolve. Ezekkel betölthető az aktuális platformnak megfelelő objektum.
Ismert RID-k
Az alábbi listában az egyes operációs rendszerekhez használt leggyakoribb RID-k egy kis része látható. A legújabb és teljes verzióért tekintse meg a adattárban található dotnet/runtime fájlt.
Windows RID-k
win-x64win-x86win-arm64
További információ: .NET telepítése Windows rendszeren.
Linuxos RID-k
-
linux-x64(A legtöbb asztali disztribúció, például a CentOS Stream, a Debian, a Fedora, az Ubuntu és a származékok) -
linux-musl-x64(Egyszerűsített disztribúciók musl , például Alpine Linux használatával) -
linux-musl-arm64(Docker-rendszerképek 64 bites Arm v8-hoz és minimalista alaprendszerképekhez) -
linux-arm(Armen futó Linux-disztribúciók, például Raspbian a Raspberry Pi Model 2+-on) -
linux-arm64(64 bites Armen futó Linux-disztribúciók, például Ubuntu Server 64 bites Raspberry Pi Model 3+) -
linux-bionic-arm64(Az Android bionic libc-jét használó disztribúciók, például a Termux) -
linux-loongarch64(A LoongArch64-en futó Linux-disztribúciók)
További információ: .NET-függőségek és követelmények.
macOS RID-k
a macOS RID-k a régebbi "OSX" márkajelzést használják.
-
osx-x64(Az operációs rendszer minimális verziója macOS 10.12 Sierra) osx-arm64
További információ: .NET-függőségek és követelmények.
iOS-beli RID-k
ios-arm64iossimulator-arm64iossimulator-x64
AndroidOS RID-k
android-arm64android-armandroid-x64android-x86