Přidání balíčků do projektu .NET

Dokončeno

.NET nabízí mnoho základních knihoven, které obstarávají spoustu věcí: od správy souborů přes HTTP po komprimaci souborů. Existuje i obrovský ekosystém knihoven třetích stran. Pomocí nástroje NuGet (.NET Package Manager) si tyto knihovny můžete do aplikace nainstalovat a používat je v ní.

Na platformě .NET a v souvisejícím ekosystému se často používá slovo závislost. Závislost balíčku je knihovna třetí strany. Jedná se o opakovaně použitelný kód, který něco dělá a který můžete přidat do aplikace. Fungování vaší aplikace na této knihovně závisí, a proto používáme slovo závislost.

Knihovnu třetí strany si můžete představit jako balíček a je uložená v úložišti. Skládá se z jedné nebo více knihoven, které můžete přidat do své aplikace, abyste mohli využívat jeho funkce.

Zaměříme se na závislosti balíčků. Projekt .NET může mít další typy závislostí, včetně architektur, analyzátorů, odkazů na projekty a sdílených závislostí projektu a také závislostí balíčků.

Určení, jestli potřebujete balíček

Jak poznáte, že pro svůj projekt potřebujete balíček? To je složitá otázka, u které je třeba zvážit několik faktorů:

  • Získání lepšího kódu: Zeptejte se sami sebe, jestli pracujete s úkolem, jako je například zabezpečení, a pokoušíte se implementovat ověřování a autorizaci. Je to oblast, kterou potřebujete zvládnout správně, abyste ochránili svá data i data vašich zákazníků. K dispozici jsou standardní vzory a knihovny, které používá mnoho vývojářů. Tyto knihovny implementují funkce, které budete pravděpodobně vždy potřebovat, a problémy se opraví při jejich vzniku. Měli byste využít tyto knihovny namísto vytváření vlastních. Kód pravděpodobně napíšete i sami, protože existuje tolik hraničních případů, které byste museli zvážit.
  • Úspora času: Většinu věcí si pravděpodobně můžete sestavit sami, jako jsou knihovny nástrojů nebo komponent uživatelského rozhraní, ale to nějakou dobu trvá. I v případě, že by byl výsledek srovnatelný s tím, co je k dispozici, není dobré věnovat čas tomu, abyste vytvářeli něco, co už existuje.
  • Údržba: Všechny knihovny a aplikace potřebují údržbu dříve nebo později. Údržba zahrnuje přidávání nových funkcí a opravy chyb. Je vhodné používat čas nebo čas vašeho týmu k údržbě knihovny, nebo je lepší nechat opensourcový softwarový tým, aby ji zvládl?

Posouzení balíčku

Před instalací knihovny můžete chtít zkontrolovat závislosti, na kterých závisí. Tyto závislosti se můžou stát dodatečnou motivací k použití balíčku, nebo vás od něho naopak odradit. Tady jsou některá z hledisek, která je dobré při výběru závislosti pro váš projekt zvážit:

  • Velikost: Počet závislostí může způsobit velké nároky. Pokud máte omezenou šířku pásma nebo jiná hardwarová omezení, může to být důležitý aspekt.
  • Licencování: Musíte zajistit, aby licence udělená pro knihovnu zahrnovala vaše zamýšlené použití bez ohledu na to, jestli je toto použití komerční, osobní nebo akademické.
  • Aktivní údržba: Může se jednat o problém, pokud se váš balíček spoléhá na závislost, která je zastaralá nebo se dlouho neaktualizovala.

Další informace o balíčku můžete ještě před jeho instalací získat na adrese https://www.nuget.org/packages/<package name>. Tato adresa URL vás přenese na podrobnou stránku balíčku. Výběrem rozevíracího seznamu Závislosti zobrazíte, na kterých balíčcích závisí funkce.

Počet závislostí sám o sobě nemusí být zcela vypovídající. Až si balíček skutečně stáhnete, můžete zjistit, že vám přibyla závislost balíčku s desítkami balíčků. Proč? Každý balíček zahrnuje seznam závislostí. Všechny tyto závislosti se po spuštění příkazu dotnet add package <package name> vyhledají a stáhnou, aby bylo možné balíček používat.

Instalace balíčku

Balíčky můžete nainstalovat několika způsoby. V sadě Visual Studio a Visual Studio pro Mac je k dispozici integrovaný příkazový řádek a grafické uživatelské rozhraní správce balíčků. Odkazy na balíčky můžete do souboru projektu přidat ručně nebo je můžete nainstalovat pomocí nástroje rozhraní příkazového řádku (CLI), jako je Paket nebo .NET Core CLI.

V tomto modulu balíčky nainstalujeme pomocí integrovaného rozhraní .NET Core CLI. Balíček můžete do svého projektu .NET přidat vyvoláním příkazu v terminálu. Typický instalační příkaz vypadá takto: dotnet add package <name of package>. Po spuštění příkazu add package se nástroj příkazového řádku připojí ke globálnímu registru, načte balíček a uloží ho do umístění složky v mezipaměti, kterou mohou používat všechny projekty.

Po instalaci a sestavení projektu se odkazy přidají do složek ladění nebo vydané verze. Adresář projektu vypadá přibližně takto:

-| bin/
---| Debug/
------| net3.1
--------| <files included in the dependency>

Nalezení balíčku

Individuální vývojáři můžou k vyhledávání a stahování balíčků, které potřebují pro své aplikace, využívat globální registr na webu NuGet.org. Pokud jde o firmu, může v ní být stanovena strategie, jaké balíčky jsou v pořádku a kde je najít.

Screenshot of NuGet.org showing a list of popular packages.

Balíčky se můžou nacházet na mnoha různých místech. Některé z těchto zdrojů můžou být veřejně dostupné a některé můžou být omezené a dostupné jenom zaměstnancům konkrétní společnosti. Tady jsou některá z míst, kde se balíčky můžou nacházet:

  • Registry: Příkladem může být globální registr, například registr NuGet.org. Můžete hostovat vlastní registry, které můžou být soukromé nebo veřejné. Služby jako GitHub a Azure DevOps zpřístupňují soukromé registry.
  • Soubory: Balíček můžete nainstalovat z místní složky. Instalace z balíčku je běžná, když se pokoušíte vyvíjet vlastní knihovny .NET a chcete balíček otestovat místně, nebo z nějakého důvodu nechcete používat registr.

Diagram that illustrates the relationship between package creators, package hosts, and package consumers.

Registr NuGet a nástroj dotnet

Když spustíte dotnet add package <name of dependency>, .NET přejde do globálního registru označovaného jako registr NuGet.org a vyhledá kód ke stažení. Nachází se na https://nuget.orgadrese . Na této stránce můžete také vyhledat balíčky, pokud je navštívíte v prohlížeči. Každý balíček má vyhrazený web, na který můžete přejít.

Screenshot of the landing page for a NuGet package.

Na těchto webech najdete další informace o tom, kde se nachází zdrojový kód. Můžete také najít informace, jako jsou metriky stahování a informace o údržbě.

Screenshot of information and metrics on a NuGet package.

Příkazy .NET

Zatím jste se dozvěděli, jak pomocí .NET Core CLI nainstalovat závislosti. Ale tento nástroj toho zvládne mnohem víc.

Rozhraní .NET Core CLI nabízí poměrně dost příkazů. Tyto příkazy vám pomůžou s úkoly, jako je instalace balíčků, vytváření balíčků a inicializace projektů .NET. Nemusíte znát všechny příkazy podrobně. Když s .NET začínáte, nejspíše si vystačíte jen s menší skupinou příkazů. Až začnete .NET využívat šířeji, budete nejspíše používat čím dál více příkazů z celé řady kategorií.

Příkazy je dobré si pomyslně rozdělit do různých kategorií, abyste si rychleji zapamatovali, co dělají:

  • Spravovat závislosti: Příkazy v této kategorii pokrývají instalaci, odebrání, vyčištění po instalaci balíčku a aktualizace balíčků.
  • Spouštění programů: Nástroj .NET Core vám může pomoct se správou toků ve vývoji aplikací. Příkladem těchto toků je spouštění testů, kompilace kódu a spouštění migračních příkazů za účelem upgradu projektů.
  • Vytváření a publikování balíčků: Několik příkazů vám může pomoct s úlohami, jako je vytvoření komprimovaného balíčku a nasdílením balíčku do registru.

Pokud si chcete zobrazit podrobný seznam všech příkazů, pak v terminálu zadejte dotnet --help.

Jak nainstalovat balíček

dotnet add package <dependency name> Pomocí příkazu nainstalujte normální závislost, která se má použít jako součást vaší aplikace.

Poznámka:

Některé balíčky můžete nainstalovat globálně. Tyto balíčky nejsou určené k importu do projektu. Z tohoto důvodu mnoho globálních balíčků představuje nástroje rozhraní příkazového řádku (CLI) nebo šablony. Tyto globální nástroje můžete nainstalovat také z úložiště balíčků. Nástroje nainstalujte pomocí příkazu dotnet tool install <name of package>. Šablony nainstalujte pomocí příkazu dotnet new -i <name of package>.

Po instalaci

Nainstalované balíčky najdete v části dependencies v souboru .csproj. Pokud chcete zjistit, jaké balíčky ve složce jsou, můžete zadat příkaz dotnet list package.

Project 'DotNetDependencies' has the following package references
   [net8.0]:
   Top-level Package      Requested   Resolved
   > Humanizer            2.7.9       2.7.9

Tento příkaz zobrazí seznam pouze balíčků nejvyšší úrovně, nikoli závislostí těchto balíčků, které nazýváme tranzitivní balíčky. To je skvělé, když se na ně potřebujete zběžně podívat. Pokud ale chcete podrobnější přehled, budete chtít zobrazit všechny tranzitivní balíčky. Když to uděláte, list příkaz vypadá takto:

dotnet list package --include-transitive

Při zahrnutí tranzitivních balíčků uvidíte závislosti i se všemi balíčky, které jste nainstalovali. Pokud spustíte dotnet list package --include-transitive, můžete získat tento výstup:

Project 'DotNetDependencies' has the following package references
   [net8.0]:
   Top-level Package      Requested   Resolved
   > Humanizer            2.7.9       2.7.9

   Transitive Package               Resolved
   > Humanizer.Core                 2.7.9
   > Humanizer.Core.af              2.7.9
   > Humanizer.Core.ar              2.7.9
   > Humanizer.Core.bg              2.7.9
   > Humanizer.Core.bn-BD           2.7.9
   > Humanizer.Core.cs              2.7.9
   ...

Obnovení závislostí

Při vytváření nebo klonování projektu se zahrnuté závislosti nestáhnou ani nenainstalují, dokud nevytvoříte projekt. Pomocí příkazu můžete ručně obnovit závislosti i nástroje specifické pro projekt, které jsou zadané v souboru dotnet restore projektu. Ve většině případů nemusíte příkaz explicitně používat. Obnovení NuGet se v případě potřeby spustí implicitně, když spustíte příkazy jako new, builda run.

Vyčištění závislostí

Dříve nebo později pravděpodobně zjistíte, že už balíček nepotřebujete, nebo si můžete uvědomit, že balíček, který jste nainstalovali, není ten, který potřebujete. Možná jste našli jiný, který danému účelu vyhovuje lépe. Ať už je důvod jakýkoli, měli byste závislosti, které nepoužíváte, odebrat. Tímto způsobem udržíte ve věcech pořádek. Závislosti navíc zabírají místo.

Pokud chcete balíček z projektu odebrat, použijte remove příkaz, například takto: dotnet remove package <name of dependency>. Tento příkaz odebere balíček ze souboru .csproj projektu.