Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Protože jsou .NET 5 (a .NET Core) a novější verze k dispozici na více a více platformách, je užitečné naučit se balit, pojmenovat a používat aplikace a knihovny verzí, které ji používají. Správci balíčků tak můžou zajistit konzistentní prostředí bez ohledu na to, kde se uživatelé rozhodnou spustit .NET. Tento článek je užitečný pro uživatele, kteří jsou:
- Probíhá pokus o sestavení rozhraní .NET ze zdroje.
- Chcete provést změny rozhraní příkazového řádku .NET, které by mohlo mít vliv na výsledné rozložení nebo vytvořené balíčky.
Rozložení disku
Při instalaci se .NET skládá z několika komponent, které jsou v systému souborů rozloženy následujícím způsobem:
{dotnet_root} (0) (*)
├── dotnet (1)
├── dnx (22)
├── LICENSE.txt (8)
├── ThirdPartyNotices.txt (8)
├── host (*)
│ └── fxr (*)
│ └── <fxr version> (2)
├── sdk (*)
│ └── <sdk version> (3)
├── sdk-manifests (4) (*)
│ └── <sdk feature band version>
├── library-packs (21) (*)
├── 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)
│ ├── runtime.<rid>.Microsoft.DotNet.ILCompiler (*)
│ │ └── <runtime version> (19)
│ └── Microsoft.NETCore.App.Runtime.NativeAOT.<rid> (*)
│ └── <runtime version> (20)
├── 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)
└── dnx (23)
(0) {dotnet_root} je sdílený adresářový kořen pro všechny hlavní a podverze .NET. Pokud je nainstalováno více modulů runtime, sdílejí složku {dotnet_root}, například
{dotnet_root}/shared/Microsoft.NETCore.App/6.0.11a{dotnet_root}/shared/Microsoft.NETCore.App/7.0.0. Název{dotnet_root}složky by měl být nezávislý na verzi, to znamená jednodušedotnet.(1) dotnet Hostitel (označovaný také jako "muxer") má dvě odlišné role: aktivaci modulu runtime pro spuštění aplikace a aktivaci sady SDK pro odeslání příkazů do ní. Hostitel je nativní spustitelný soubor (
dotnet.exe).(22) dnx Skript
dnxje spustitelný shellový skript, jehož účelem je přesměrovat příkazy uživatele kdotnet dnxpříkazu uvnitř sady SDK. Tato funkce primárně existuje, aby se koncovým uživatelům usnadnily získávání a spouštění různých druhů aplikací .NET, jako jsou nástroje .NET. Představte si ho podobně jako příkaz z Node.jsnpx. Je nezávislá na verzi, protože většina skutečných funkcídnxprocesu jednorázového spuštění je zpracovávána vdotnetimplementaci rozhraní příkazového řádku v adresáři verzované sady SDK.
Zatímco existuje jeden hostitel, většina ostatních komponent je ve verzovaných adresářích (2,3,5,6). To znamená, že v systému může existovat více verzí, protože jsou nainstalované vedle sebe.
(2) hostitele/fxr/<verze fxr obsahuje logiku určení architektury> používanou hostitelem. Hostitel používá nejnovější nainstalovaný hostfxr. Hostfxr zodpovídá za výběr příslušného modulu runtime při provádění aplikace .NET. Například aplikace vytvořená pro .NET 7.0.0 používá modul runtime 7.0.5, pokud je k dispozici. Podobně hostfxr vybere během vývoje příslušnou sadu SDK.
(3) sdk/<sdk verze> Sdk (označovaná také jako "nástroje") je sada spravovaných nástrojů, které slouží k psaní a sestavování knihoven a aplikací .NET. Sada SDK zahrnuje .NET CLI, kompilátory spravovaných jazyků, MSBuild a přidružené úlohy a cíle sestavení, NuGet, nové šablony projektů atd.
(4) sdk-manifests/<verze funkcí pásma> Názvy a verze souborů, které vyžaduje volitelná instalace pracovního zatížení, se uchovávají v manifestech pracovního zatížení uložených v této složce. Název složky je verze sady SDK v pásmu funkcí. Pro verzi sady SDK, například 7.0.102, by se tato složka stále jmenovala 7.0.100. Při instalaci úlohy se podle potřeby vytvoří následující složky pro prostředky úlohy: metadata a balíčky šablon. Distribuce může vytvořit prázdný soubor /metadata/workloads/<sdkfeatureband>/userlocal , pokud by se úlohy měly instalovat v cestě uživatele, a ne ve složce dotnet . Další informace najdete v tématu Problém s GitHubem dotnet/installer#12104.
Sdílená složka obsahuje frameworky. Sdílená architektura poskytuje sadu knihoven v centrálním umístění, aby je mohly používat různé aplikace.
(5) Shared/Microsoft.NETCore.App/<verze běhového prostředí> Tato architektura obsahuje modul běhového prostředí .NET a podpůrné spravované knihovny.
(6) shared/Microsoft.AspNetCore.{App,All}/<verze aspnetcore> obsahuje knihovny ASP.NET Core. Knihovny pod
Microsoft.AspNetCore.Appjsou vyvíjeny a podporovány jako součást projektu .NET. Knihovny podMicrosoft.AspNetCore.Allpředstavují nadmnožinu, která zahrnuje také knihovny třetích stran.(7) sdílená/Microsoft.Desktop.App/<desktopová verze aplikace> obsahuje desktopové knihovny Windows. Tato funkce není zahrnutá na platformách jiných než Windows.
(8) LICENSE.txt,ThirdPartyNotices.txt jsou licence .NET a licence knihoven třetích stran používané v .NET.
(9,10, 23) dotnet.1.gz, dotnet
dotnet.1.gzje manuálová stránka dotnet.dotnetje symbolický odkaz k hostu .NET (1).dnxje symbolický odkaz nadnxshell skript (22). Tyto soubory se instalují ve známých umístěních pro integraci systému.(11,12) Microsoft.NETCore.App.Ref,Microsoft.AspNetCore.App.Ref popisují rozhraní API verze
x.y.NET a ASP.NET Core. Tyto balíčky se používají při kompilaci pro tyto cílové verze.(13) Microsoft.NETCore.App.Host.<rid> obsahuje nativní binární soubor pro platformu
rid. Tento binární soubor je šablona při kompilaci aplikace .NET do nativního binárního souboru pro danou platformu.(14) Microsoft.WindowsDesktop.App.Ref popisuje rozhraní API
x.yverze desktopových aplikací windows. Tyto soubory se používají při kompilaci pro daný cíl. To není k dispozici na platformách jiných než Windows.(15) NETStandard.Library.Ref popisuje rozhraní NETStandard
x.yAPI. Tyto soubory se používají při kompilaci pro daný cíl.(16) /etc/dotnet/install_location je soubor, který obsahuje úplnou cestu pro
{dotnet_root}. Cesta může končit novým řádkem. Pokud je kořen/usr/share/dotnet, není nutné tento soubor přidávat.Šablony (17) obsahují šablony používané sadou SDK. Tady například
dotnet newnajdete šablony projektů.(18) Microsoft.NETCore.App.Runtime.<rid>/<runtime verze>, Microsoft.AspNetCore.App.Runtime.<rid>/<aspnetcore verze> Tyto soubory umožňují vytvářet samostatné aplikace. Tyto adresáře obsahují symbolické odkazy na soubory v (2), (5) a (6).
(19) runtime.<rid>.Microsoft.DotNet.ILCompiler/<runtime verze> Tyto soubory umožňují vytvářet aplikace NativeAOT na cílové platformě. V .NET 9 umožňuje také vytváření nativních aplikací AOT pro cílovou platformu. V .NET 9 a novějších verzích může být k dispozici.
(20) Microsoft.NETCore.App.Runtime.NativeAOT.<rid>/<verze modulu runtime> Tyto soubory umožňují vytváření nativních AOT aplikací pro cílovou platformu. Může být k dispozici v .NET 10 a novější.
(21) Balíčky knihoven obsahují soubory balíčků NuGet. Sada SDK je nakonfigurovaná tak, aby tuto složku používala jako zdroj NuGet. Seznam balíčků NuGet poskytovaných sestavením .NET je popsaný níže.
Složky označené (*) jsou používány několika balíčky. Některé formáty balíčků (například rpm) vyžadují zvláštní zpracování těchto složek. Správce balíčků se o to musí postarat.
Soubory balíčků přidané do library-packs (21) můžou být balíčky, které Microsoft nedistribuuje pro cílovou platformu. Soubory mohou být také balíčky, které Microsoft distribuuje a pro který library-packs poskytuje balíček vytvořený ze zdroje, aby splňoval pravidla distribuce balíčků platformy. Sestavení .NET obsahuje následující balíčky:
| Název balíčku | Publikoval Microsoft | Potřebné pro |
|---|---|---|
Microsoft.DotNet.ILCompiler.<version>.nupkgMicrosoft.NET.ILLink.Tasks.<version>.nupkg |
☑ | NativeAOT |
Doporučené balíčky
Správa verzí .NET je založená na číslech verzí součástí [major].[minor] modulu runtime.
Verze sady SDK používá stejnou [major].[minor] a má nezávislou [patch], která kombinuje sémantiku funkcí a oprav pro sadu SDK.
Příklad: SDK verze 7.0.302 je druhá verze opravy třetí verze funkce sady SDK, která podporuje modul runtime 7.0. Další informace o tom, jak funguje správa verzí, najdete v tématu s přehledem správy verzí .NET.
Některé balíčky obsahují část čísla verze v názvu. To vám umožní nainstalovat konkrétní verzi. Zbytek verze není součástí názvu verze. To umožňuje správci balíčků operačního systému aktualizovat balíčky (například automaticky instalovat opravy zabezpečení). Podporované správce balíčků jsou specifické pro Linux.
Následující seznam obsahuje doporučené balíčky:
dotnet-sdk-[major].[minor]– Nainstaluje nejnovější sadu SDK pro konkrétní modul runtime.- Verze:<sdk verze>
- Příklad: dotnet-sdk-7.0
- Obsahuje: (3),(4);(18);(21)
-
Závislosti:
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]
dotnet-sdk-aot-[major].[minor]– Nainstaluje komponenty sady SDK pro platformu NativeAOT.- Verze:<SDK verze>
- Příklad: dotnet-sdk-aot-9.0
- Obsahuje: (19, 20)
-
Závislosti:
dotnet-sdk-[major].[minor]sada nástrojů kompilátoru a balíčky pro vývojáře knihoven, na které modul runtime .NET závisí
aspnetcore-runtime-[major].[minor]– Nainstaluje konkrétní modul runtime ASP.NET Core.- < c0>Verze:< /c0>< c1 />aspnetcore runtime verze< c2 />
- Příklad: aspnetcore-runtime-7.0
- Obsahuje: (6)
-
Závislosti:
dotnet-runtime-[major].[minor]
dotnet-runtime-deps-[major].[minor](Volitelné) – Nainstaluje závislosti pro spouštění samostatných aplikací.- Verze:<běhové prostředí verze>
- Příklad: dotnet-runtime-deps-7.0
- Závislosti:Závislosti specifické pro distribuci
dotnet-runtime-[major].[minor]– Nainstaluje konkrétní běhové prostředí.- Verze:<runtime>
- Příklad: dotnet-runtime-7.0
- Obsahuje: (5)
-
Závislosti:
dotnet-hostfxr-[major].[minor],dotnet-runtime-deps-[major].[minor]
dotnet-hostfxr-[major].[minor]-závislost- Verze:<runtime>
- Příklad: dotnet-hostfxr-7.0
- Obsahuje: (2)
-
Závislosti:
dotnet-host
dotnet-host-závislost- Verze:<runtime>
- Příklad: dotnet-host
- Obsahuje: (1),(8),(9);(10);(16);(22);(23)
dotnet-apphost-pack-[major].[minor]-závislost- Verze:<runtime>
- Obsahuje: (13)
dotnet-targeting-pack-[major].[minor]– Umožňuje cílení na verzi runtime, která není nejnovější.- Verze:<runtime>
- Obsahuje: (12)
aspnetcore-targeting-pack-[major].[minor]– Umožňuje cílení na starší runtime, který není nejnovější.- Verze:<aspnetcore runtime>
- Obsahuje: (11)
netstandard-targeting-pack-[netstandard_major].[netstandard_minor]- Umožňuje cílení na netstandardovou verzi.- Verze:<sdk>
- Obsahuje: (15)
dotnet-templates-[major].[minor]- Verze:<sdk>
- Obsahuje: (17)
Následující dva metabalíčky jsou volitelné. Přinášejí koncovým uživatelům hodnotu v tom, že abstrahují balíček nejvyšší úrovně (dotnet-sdk), který zjednodušuje instalaci úplné sady balíčků .NET. Tyto metabalely odkazují na konkrétní verzi sady .NET SDK.
dotnet[major]– Nainstaluje zadanou verzi sady SDK.- Verze:<sdk>
- Příklad: dotnet7
-
Závislosti:
dotnet-sdk-[major].[minor]
dotnet– Nainstaluje konkrétní verzi sady SDK určenou distribucí, která má být primární verzí – obvykle nejnovější dostupnou verzí.- Verze:<sdk>
- Příklad: dotnet
-
Závislosti:
dotnet-sdk-[major].[minor]
Vyžaduje dotnet-runtime-deps-[major].[minor] pochopení závislostí specifických pro danou distribuci. Vzhledem k tomu, že systém sestavení distribuce může být schopen tuto možnost automaticky odvodit, je balíček volitelný, v takovém případě jsou tyto závislosti přidány přímo do dotnet-runtime-[major].[minor] balíčku.
Pokud je obsah balíčku ve složce s verzí, název [major].[minor] balíčku odpovídá názvu složky s verzí. Pro všechny balíčky s výjimkou netstandard-targeting-pack-[netstandard_major].[netstandard_minor], to se také shoduje s verzí .NET.
Závislosti mezi balíčky by měly používat stejný nebo větší požadavek na verzi. Například dotnet-sdk-7.0:7.0.401 vyžaduje aspnetcore-runtime-7.0 >= 7.0.6. To uživateli umožňuje upgradovat instalaci prostřednictvím kořenového balíčku (například dnf update dotnet-sdk-7.0).
Většina distribucí vyžaduje, aby se všechny artefakty vytvořily ze zdroje. To má vliv na balíčky:
Knihovny třetích stran pod
shared/Microsoft.AspNetCore.Allnení snadné sestavit ze zdrojového kódu. Aby byl tento adresář vynechán z balíčkuaspnetcore-runtime.Prvek
NuGetFallbackFolderje naplněn pomocí binárních artefaktů znuget.org. Měl by zůstat prázdný.
Více dotnet-sdk balíčků může poskytovat stejné soubory pro NuGetFallbackFolder. Aby nedocházelo k problémům se správcem balíčků, měly by být tyto soubory identické (kontrolní součet, datum změny atd.).
Ladění balíčků
Ladicí obsah by se měl balit do balíčků se jmény ladění, které odpovídají rozdělení balíčku .NET popsanému dříve v tomto článku. Například ladicí obsah balíčku dotnet-sdk-[major].[minor] by měl být součástí balíčku s názvem dotnet-sdk-dbg-[major].[minor]. Ladicí obsah byste měli nainstalovat do stejného umístění jako binární soubory.
Tady je několik binárních příkladů:
{dotnet_root}/sdk/<sdk version> V adresáři se očekávají následující dva soubory:
-
dotnet.dll- nainstalována s balíčkemdotnet-sdk-[major].[minor] -
dotnet.pdb- nainstalována s balíčkemdotnet-sdk-dbg-[major].[minor]
{dotnet_root}/shared/Microsoft.NETCore.App/<runtime version> V adresáři se očekávají následující dva soubory:
-
System.Text.Json.dll- nainstalována s balíčkemdotnet-runtime-[major].[minor] -
System.Text.Json.pdb- nainstalována s balíčkemdotnet-runtime-dbg-[major].[minor]
{dotnet_root/shared/Microsoft.AspNetCore.App/<aspnetcore version> V adresáři se očekávají následující dva soubory:
-
Microsoft.AspNetCore.Routing.dll- nainstalováno s balíčkyaspnetcore-runtime-[major].[minor] -
Microsoft.AspNetCore.Routing.pdb- nainstalováno saspnetcore-runtime-dbg-[major].[minor]balíčky
Od verze .NET 8.0 je veškerý ladicí obsah .NET (soubory PDB), vytvořený zdrojovým sestavením, k dispozici v tarballu s názvem dotnet-symbols-sdk-<version>-<rid>.tar.gz. Tento archiv obsahuje soubory PDB v podadresářích, které odpovídají adresářové struktuře tarball sady .NET SDK - dotnet-sdk-<version>-<rid>.tar.gz.
I když je veškerý ladicí obsah dostupný v ladicím tarballu, ne veškerý ladicí obsah je stejně důležitý. Koncoví uživatelé se většinou zajímají o obsah shared/Microsoft.AspNetCore.App/<aspnetcore version> adresářů a shared/Microsoft.NETCore.App/<runtime version> adresářů.
Obsah sady SDK pod sdk/<sdk version> je užitečný při ladění nástrojů sady .NET SDK.
Doporučené balíčky pro ladění jsou následující:
aspnetcore-runtime-dbg-[major].[minor]– Nainstaluje ladicí obsah pro konkrétní modul runtime ASP.NET Core.- Verze:<aspnetcore runtime>
- Příklad: aspnetcore-runtime-dbg-8.0
- Obsahuje: ladicí data pro (6)
-
Závislosti:
aspnetcore-runtime-[major].[minor]
dotnet-runtime-dbg-[major].[minor]– Nainstaluje ladicí obsah pro konkrétní runtime.- Verze:<runtime>
- Příklad: dotnet-runtime-dbg-8.0
- Obsahuje: ladicí obsah pro (5)
-
Závislosti:
dotnet-runtime-[major].[minor]
Následující ladicí balíček je volitelný:
-
dotnet-sdk-dbg-[major].[minor]– Nainstaluje ladicí obsah pro konkrétní verzi sady SDK.- Verze:<sdk>
- Příklad: dotnet-sdk-dbg-8.0
- Obsahuje: ladicí obsah pro (3),(4),(18)
-
Závislosti:
dotnet-sdk-[major].[minor]
Ladicí tarball obsahuje také nějaký ladicí obsah pod packs, který představuje kopie obsahu pod shared. V rozložení packs .NET se adresář používá k vytváření aplikací .NET. Neexistují žádné scénáře ladění, takže byste neměli zabalovat ladicí obsah packs v ladicím tarballu.
Vytváření balíčků
Úložiště dotnet/source-build obsahuje pokyny k sestavení zdrojového tarballu sady .NET SDK a všech jejích komponent. Výstup úložiště zdrojového sestavení odpovídá rozložení popsanému v první části tohoto článku.