.NET disztribúciós csomagolás
Mivel a .NET 5 (és a .NET Core) és újabb verziók egyre több platformon válnak elérhetővé, hasznos tudni, hogyan csomagolhatja, nevezheti el és verziószámozza azokat az alkalmazásokat és kódtárakat, amelyek ezt használják. Így a csomag karbantartói egységes élményt biztosíthatnak, függetlenül attól, hogy a felhasználók hol futtatják a .NET-et. Ez a cikk a következő felhasználók számára hasznos:
- .NET-et próbál létrehozni a forrásból.
- Olyan módosításokat szeretne végezni a .NET CLI-ben, amelyek hatással lehetnek az eredményként létrehozott elrendezésre vagy csomagokra.
Lemezelrendezés
Telepítésekor a .NET több összetevőből áll, amelyek a fájlrendszerben az alábbiak szerint vannak lefektetve:
{dotnet_root} (0) (*)
├── dotnet (1)
├── LICENSE.txt (8)
├── ThirdPartyNotices.txt (8)
├── host (*)
│ └── fxr (*)
│ └── <fxr version> (2)
├── sdk (*)
│ └── <sdk version> (3)
├── sdk-manifests (4) (*)
│ └── <sdk feature band version>
├── library-packs (4) (*)
├── metadata (4) (*)
│ └── workloads
│ └── <sdk feature band version>
├── template-packs (4) (*)
├── packs (*)
│ ├── Microsoft.AspNetCore.App.Ref (*)
│ │ └── <aspnetcore ref version> (11)
│ ├── Microsoft.NETCore.App.Ref (*)
│ │ └── <netcore ref version> (12)
│ ├── Microsoft.NETCore.App.Host.<rid> (*)
│ │ └── <apphost version> (13)
│ ├── Microsoft.WindowsDesktop.App.Ref (*)
│ │ └── <desktop ref version> (14)
│ ├── NETStandard.Library.Ref (*)
│ │ └── <netstandard version> (15)
│ ├── Microsoft.NETCore.App.Runtime.<rid> (*)
│ │ └── <runtime version> (18)
│ └── Microsoft.AspNetCore.App.Runtime.<rid> (*)
│ └── <aspnetcore version> (18)
├── shared (*)
│ ├── Microsoft.NETCore.App (*)
│ │ └── <runtime version> (5)
│ ├── Microsoft.AspNetCore.App (*)
│ │ └── <aspnetcore version> (6)
│ ├── Microsoft.AspNetCore.All (*)
│ │ └── <aspnetcore version> (6)
│ └── Microsoft.WindowsDesktop.App (*)
│ └── <desktop app version> (7)
└── templates (*)
│ └── <templates version> (17)
/
├── etc/dotnet
│ └── install_location (16)
├── usr/share/man/man1
│ └── dotnet.1.gz (9)
└── usr/bin
└── dotnet (10)
(0) A(z) {dotnet_root} az összes .NET-főverzió és alverzió közös gyökere. Ha több futtatókörnyezet van telepítve, akkor a (például
{dotnet_root}/shared/Microsoft.NETCore.App/6.0.11
: {dotnet_root} mappát) és{dotnet_root}/shared/Microsoft.NETCore.App/7.0.0
a . A mappa nevének{dotnet_root}
agnosztikus verziónak kell lennie, azaz egyszerűendotnet
.(1) dotnet A gazdagép (más néven muxer) két különböző szerepkörrel rendelkezik: aktiváljon egy futtatókörnyezetet egy alkalmazás elindításához, és aktiváljon egy SDK-t a parancsok küldéséhez. A gazdagép natív végrehajtható (
dotnet.exe
).
Bár egyetlen gazdagép van, a többi összetevő a verziószámozott könyvtárakban (2,3,5,6) található. Ez azt jelenti, hogy több verzió is jelen lehet a rendszeren, mivel egymás mellett vannak telepítve.
(2) a gazdagép/fxr/<fxr verzió> tartalmazza a gazdagép által használt keretrendszerfeloldási logikát. A gazdagép a legújabb telepített hostfxrt használja. A hostfxr felelős a megfelelő futtatókörnyezet kiválasztásáért egy .NET-alkalmazás végrehajtásakor. A .NET 7.0.0-hoz készült alkalmazások például a 7.0.5-ös futtatókörnyezetet használják, amikor elérhető. Hasonlóképpen, a hostfxr kiválasztja a megfelelő SDK-t a fejlesztés során.
(3) sdk/<sdk verzió> Az SDK (más néven "eszközkészlet") a .NET-kódtárak és -alkalmazások írására és létrehozására használt felügyelt eszközök készlete. Az SDK tartalmazza a .NET CLI-t, a felügyelt nyelvfordítókat, az MSBuildet és a kapcsolódó buildelési feladatokat és célokat, a NuGetet, az új projektsablonokat stb.
(4) sdk-manifests/<sdk feature band version> Az opcionális számítási feladatok telepítéséhez szükséges eszközök neve és verziói a mappában tárolt munkaterhelés-jegyzékekben vannak tárolva. A mappa neve az SDK szolgáltatássáv-verziója. Az olyan SDK-verziók esetében, mint például a 7.0.102, ez a mappa továbbra is a 7.0.100 nevet kapta. A számítási feladatok telepítésekor a következő mappák jönnek létre a számítási feladat eszközeihez szükséges módon: kódtárcsomagok, metaadatok és sabloncsomagok. A disztribúció létrehozhat egy üres /metaadat/számítási feladat/<sdkfeatureband>/userlocal fájlt, ha a számítási feladatokat a dotnet mappa helyett egy felhasználói útvonalon kell telepíteni. További információ: GitHub-probléma dotnet/installer#12104.
A megosztott mappa keretrendszereket tartalmaz. A megosztott keretrendszerek egy központi helyen biztosítják a kódtárak készletét, hogy különböző alkalmazások használhassák őket.
(5) megosztott/Microsoft.NETCore.App/<runtime verzió> Ez a keretrendszer tartalmazza a .NET-futtatókörnyezetet és a felügyelt kódtárakat.
(6) shared/Microsoft.AspNetCore.{ Az App,All}/<aspnetcore verzió> tartalmazza a ASP.NET Core-kódtárakat. Az alatta lévő
Microsoft.AspNetCore.App
kódtárakat a .NET-projekt részeként fejlesztjük és támogatjuk. Az alatta lévőMicrosoft.AspNetCore.All
kódtárak olyan szuperhalmazok, amelyek harmadik féltől származó kódtárakat is tartalmaznak.(7) A shared/Microsoft.Desktop.App/<desktop alkalmazás verziója> tartalmazza a Windows asztali kódtárakat. Ez nem szerepel a windowsos platformokon.
(8) LICENSE.txt,ThirdPartyNotices.txt a .NET-ben használt külső kódtárak .NET-licencei és licencei.
(9,10) dotnet.1.gz a dotnet
dotnet.1.gz
a dotnet manuális oldala.dotnet
egy szimlink a dotnet gazdagéphez(1). Ezek a fájlok jól ismert helyeken vannak telepítve a rendszerintegrációhoz.(11,12) A Microsoft.NETCore.App.Ref,Microsoft.AspNetCore.App.Ref a .NET és a ASP.NET Core egyik
x.y
verziójának API-ját írja le. Ezeket a csomagokat a célverziók összeállításához használják.(13) Microsoft.NETCore.App.Host.<A rid> egy natív bináris fájlt tartalmaz a platformhoz
rid
. Ez a bináris egy sablon, amikor egy .NET-alkalmazást natív binárissá állít össze az adott platformhoz.(14) A Microsoft.WindowsDesktop.App.Ref a Windows Desktop-alkalmazások verziójának API-ját
x.y
ismerteti. Ezeket a fájlokat a cél összeállításakor használja a rendszer. Ez nem windowsos platformokon van megadva.(15) A NETStandard.Library.Ref a netstandard
x.y
API-t írja le. Ezeket a fájlokat a cél összeállításakor használja a rendszer.(16) /etc/dotnet/install_location egy fájl, amely a teljes elérési utat
{dotnet_root}
tartalmazza. Az elérési út egy új vonallal végződhet. Nem szükséges hozzáadni ezt a fájlt, ha a gyökér ./usr/share/dotnet
(17) A sablonok az SDK által használt sablonokat tartalmazzák. Itt például megtalálhatja a
dotnet new
projektsablonokat.(18) Microsoft.NETCore.App.Runtime.<rid>/<runtime verzió,Microsoft.AspNetCore.App.Runtime>.<rid>/<aspnetcore verzió> Ezek a fájlok lehetővé teszik önálló alkalmazások létrehozását. Ezek a könyvtárak a (2), (5) és (6) fájlokra mutató szimbolikus hivatkozásokat tartalmaznak.
A megjelölt (*)
mappákat több csomag használja. Egyes csomagformátumok (például rpm
) speciálisan kezelik az ilyen mappákat. Erről a csomagfenntartónak kell gondoskodnia.
Ajánlott csomagok
A .NET-verziószámozás a futtatókörnyezeti összetevő [major].[minor]
verziószámán alapul.
Az SDK-verzió ugyanazt [major].[minor]
használja, és független [patch]
, amely egyesíti az SDK funkció- és javításszemanikáját.
Például: Az SDK 7.0.302-es verziója a 7.0-s futtatókörnyezetet támogató SDK harmadik funkciókiadásának második patch kiadása. A verziószámozás működésével kapcsolatos további információkért tekintse meg a .NET-verziószámozás áttekintését.
Egyes csomagok a verziószám egy részét tartalmazzák a nevükben. Ez lehetővé teszi egy adott verzió telepítését. A többi verzió nem szerepel a verziónévben. Ez lehetővé teszi, hogy az operációsrendszer-csomagkezelő frissítse a csomagokat (például automatikusan telepítse a biztonsági javításokat). A támogatott csomagkezelők Linux-specifikusak.
Az alábbiakban az ajánlott csomagokat soroljuk fel:
dotnet-sdk-[major].[minor]
- Telepíti a legújabb SDK-t adott futtatókörnyezethez- Verzió:<sdk verzió>
- Példa: dotnet-sdk-7.0
- Tartalmazza: (3),(4),(18)
- Függőségek:
dotnet-runtime-[major].[minor]
,aspnetcore-runtime-[major].[minor]
,dotnet-targeting-pack-[major].[minor]
,aspnetcore-targeting-pack-[major].[minor]
,netstandard-targeting-pack-[netstandard_major].[netstandard_minor]
,dotnet-apphost-pack-[major].[minor]
dotnet-templates-[major].[minor]
aspnetcore-runtime-[major].[minor]
– Egy adott ASP.NET Core-futtatókörnyezet telepítése- Verzió:<aspnetcore futtatókörnyezet verziója>
- Példa: aspnetcore-runtime-7.0
- Tartalmazza: (6)
- Függőségek:
dotnet-runtime-[major].[minor]
dotnet-runtime-deps-[major].[minor]
(Nem kötelező) – Telepíti az önálló alkalmazások futtatásához szükséges függőségeket- Verzió:<futtatókörnyezet verziója>
- Példa: dotnet-runtime-deps-7.0
- Függőségek: disztribúcióspecifikus függőségek
dotnet-runtime-[major].[minor]
– Egy adott futtatókörnyezet telepítése- Verzió:<futtatókörnyezet verziója>
- Példa: dotnet-runtime-7.0
- Tartalmazza: (5)
- Függőségek:
dotnet-hostfxr-[major].[minor]
,dotnet-runtime-deps-[major].[minor]
dotnet-hostfxr-[major].[minor]
-függőség- Verzió:<futtatókörnyezet verziója>
- Példa: dotnet-hostfxr-7.0
- Tartalmazza: (2)
- Függőségek:
dotnet-host
dotnet-host
-függőség- Verzió:<futtatókörnyezet verziója>
- Példa: dotnet-host
- Tartalmazza: (1),(8),(9),(10),(16)
dotnet-apphost-pack-[major].[minor]
-függőség- Verzió:<futtatókörnyezet verziója>
- Tartalmazza: (13)
dotnet-targeting-pack-[major].[minor]
– Lehetővé teszi a nem legújabb futtatókörnyezetek célzását- Verzió:<futtatókörnyezet verziója>
- Tartalmazza: (12)
aspnetcore-targeting-pack-[major].[minor]
– Lehetővé teszi a nem legújabb futtatókörnyezetek célzását- Verzió:<aspnetcore futtatókörnyezet verziója>
- Tartalmazza: (11)
netstandard-targeting-pack-[netstandard_major].[netstandard_minor]
- Lehetővé teszi a netstandard verzió célzását- Verzió:<sdk verzió>
- Tartalmazza: (15)
dotnet-templates-[major].[minor]
- Verzió:<sdk verzió>
- Tartalmazza: (17)
Az alábbi két metacsomag nem kötelező. Értéket adnak a végfelhasználók számára, mivel elvonják a legfelső szintű csomagot (dotnet-sdk), ami leegyszerűsíti a .NET-csomagok teljes készletének telepítését. Ezek a metacsomagok egy adott .NET SDK-verzióra hivatkoznak.
dotnet[major]
– Telepíti a megadott SDK-verziót- Verzió:<sdk verzió>
- Példa: dotnet7
- Függőségek:
dotnet-sdk-[major].[minor]
dotnet
– A disztribúciók által meghatározott SDK-verziót telepíti elsődleges verzióként – általában a legújabb elérhető verziót- Verzió:<sdk verzió>
- Példa: dotnet
- Függőségek:
dotnet-sdk-[major].[minor]
Ehhez dotnet-runtime-deps-[major].[minor]
ismernie kell a disztribúcióspecifikus függőségeket. Mivel a disztribúciós buildrendszer automatikusan le tudja ezt származtatni, a csomag nem kötelező, ebben az esetben ezek a függőségek közvetlenül a dotnet-runtime-[major].[minor]
csomaghoz lesznek hozzáadva.
Ha a csomag tartalma verziószámozott mappa alatt van, a csomag neve [major].[minor]
megegyezik a verziószámozott mappa nevével. Ez a netstandard-targeting-pack-[netstandard_major].[netstandard_minor]
.NET-verzió kivételével minden csomag esetében megegyezik.
A csomagok közötti függőségeknek a verziókövetelménynél egyenlőnek vagy nagyobbnak kell lennie. Ehhez például dotnet-sdk-7.0:7.0.401
szükséges aspnetcore-runtime-7.0 >= 7.0.6
. Ez lehetővé teszi, hogy a felhasználó egy gyökércsomagon (például dnf update dotnet-sdk-7.0
) frissítse a telepítést.
A legtöbb disztribúcióhoz az összes összetevőt forrásból kell létrehozni. Ez hatással van a csomagokra:
A harmadik
shared/Microsoft.AspNetCore.All
féltől származó kódtárak nem hozhatók létre könnyen a forrásból. Így a mappa ki van hagyva aaspnetcore-runtime
csomagból.A
NuGetFallbackFolder
rendszer a következőből származónuget.org
bináris összetevőkkel tölti ki: . Üresnek kell maradnia.
Több dotnet-sdk
csomag is ugyanazokat a fájlokat biztosíthatja a NuGetFallbackFolder
. A csomagkezelővel kapcsolatos problémák elkerülése érdekében ezeknek a fájloknak azonosnak kell lenniük (ellenőrzőösszeg, módosítás dátuma stb.).
Csomagok hibakeresése
A hibakeresési tartalmakat olyan hibakeresési nevű csomagokba kell csomagolni, amelyek a cikkben korábban ismertetett .NET-csomagok felosztását követik. A csomag hibakeresési dotnet-sdk-[major].[minor]
tartalmának például szerepelnie kell egy nevesített dotnet-sdk-dbg-[major].[minor]
csomagban. A hibakeresési tartalmat a bináris fájlokkal megegyező helyre kell telepítenie.
Íme néhány bináris példa:
A címtárban {dotnet_root}/sdk/<sdk version>
a következő két fájl várható:
dotnet.dll
- csomaggaldotnet-sdk-[major].[minor]
telepítvedotnet.pdb
- csomaggaldotnet-sdk-dbg-[major].[minor]
telepítve
A címtárban {dotnet_root}/shared/Microsoft.NETCore.App/<runtime version>
a következő két fájl várható:
System.Text.Json.dll
- csomaggaldotnet-runtime-[major].[minor]
telepítveSystem.Text.Json.pdb
- csomaggaldotnet-runtime-dbg-[major].[minor]
telepítve
A címtárban {dotnet_root/shared/Microsoft.AspNetCore.App/<aspnetcore version>
a következő két fájl várható:
Microsoft.AspNetCore.Routing.dll
- csomagokkalaspnetcore-runtime-[major].[minor]
telepítveMicrosoft.AspNetCore.Routing.pdb
- csomagokkalaspnetcore-runtime-dbg-[major].[minor]
telepítve
A .NET 8.0-tól kezdve a forrás buildelése által létrehozott összes .NET-hibakeresési tartalom (PDB-fájl) elérhető egy tarballban dotnet-symbols-sdk-<version>-<rid>.tar.gz
. Ez az archívum a .NET SDK tarball könyvtárszerkezetének megfelelő alkönyvtárakban lévő PDF-fájlokat tartalmaz . dotnet-sdk-<version>-<rid>.tar.gz
Bár az összes hibakeresési tartalom elérhető a hibakeresési tarballban, nem minden hibakeresési tartalom ugyanolyan fontos. A végfelhasználókat leginkább a könyvtárak és shared/Microsoft.NETCore.App/<runtime version>
a shared/Microsoft.AspNetCore.App/<aspnetcore version>
tartalom érdekli.
A alatta lévő sdk/<sdk version>
SDK-tartalom hasznos a .NET SDK-eszközkészletek hibakereséséhez.
Az alábbi csomagok a javasolt hibakeresési csomagok:
aspnetcore-runtime-dbg-[major].[minor]
– Hibakeresési tartalmak telepítése egy adott ASP.NET Core-futtatókörnyezethez- Verzió:<aspnetcore futtatókörnyezet verziója>
- Példa: aspnetcore-runtime-dbg-8.0
- Tartalmazza: a(z) (6) tartalom hibakeresése
- Függőségek:
aspnetcore-runtime-[major].[minor]
dotnet-runtime-dbg-[major].[minor]
– Egy adott futtatókörnyezetben hibakeresési tartalmat telepít- Verzió:<futtatókörnyezet verziója>
- Példa: dotnet-runtime-dbg-8.0
- Tartalmazza: tartalom hibakeresése a következőhöz: (5)
- Függőségek:
dotnet-runtime-[major].[minor]
Az alábbi hibakeresési csomag nem kötelező:
dotnet-sdk-dbg-[major].[minor]
– Telepíti a hibakeresési tartalmat egy adott SDK-verzióhoz- Verzió:<sdk verzió>
- Példa: dotnet-sdk-dbg-8.0
- Tartalmazza: tartalom hibakeresése a következőhöz: (3),(4),(18)
- Függőségek:
dotnet-sdk-[major].[minor]
A hibakeresési tarball tartalmaz néhány hibakeresési tartalmat packs
is, amelyek alatt a tartalom shared
másolatai láthatók. A .NET-elrendezésben a packs
könyvtár a .NET-alkalmazások létrehozásához használatos. Nincsenek hibakeresési forgatókönyvek, ezért ne csomagolja be a hibakeresési tartalmat packs
a hibakeresési tarballba.
Csomagok készítése
A dotnet/source-build adattár útmutatást nyújt a .NET SDK és annak összes összetevőjének forrás tarballjának létrehozásához. A forrás-build adattár kimenete megegyezik a cikk első szakaszában ismertetett elrendezésével.
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: