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 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.

Tady se zaměříme na závislosti balíčků. Projekt .NET ale může mít kromě závislostí balíčků i jiné typy závislostí. Včetně architektur, analyzátorů, odkazů na projekt a závislostí sdílených projektů.

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

Jak poznáte, že pro svůj projekt potřebujete balíček? Je to složitá otázka, která zahrnuje 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é pravděpodobně vždy potřebujete, a problémy se opravují při jejich vzniku. Měli byste využít tyto knihovny namísto vytváření vlastních. Pravděpodobně nebudete psát kód stejně jako sami, protože existuje tolik hraničních případů, které je potřeba 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 když jsou vaše výsledky srovnatelné s dostupnými výsledky, není vhodné využít čas k replikaci práce.
  • Ú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 váš balíček spoléhá na závislost, která se aktivně neudržuje. Závislost může být po dlouhou dobu zastaralá nebo se neaktualizuje.

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.

Pro účely tohoto modulu použijeme integrované rozhraní příkazového řádku .NET Core k instalaci balíčků. 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 s webem NuGet.org a seznamem oblíbených balíčků

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 znázorňující vztah mezi tvůrci balíčků, hostiteli balíčků a uživateli balíčků

Registr NuGet a nástroj dotnet

Když spustíte dotnet add package <name of dependency>, .NET přejde do globálního registru s názvem NuGet.org registr umístěný na https://nuget.org a vyhledá kód ke stažení. 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 cílové stránky balíčku NuGet

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ě.

Snímek obrazovky s informacemi a metrikami v balíčku NuGet

Příkazy .NET

Zatím jste se dozvěděli, jak můžete nainstalovat závislosti pomocí rozhraní příkazového řádku .NET Core. 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ů. Při rozšiřování používání .NET můžete použít více příkazů z různých 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 jsou uvedené v dependencies části 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. Tento příkaz je pěkný pro rychlý pohled. 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

Zahrnutí tranzitivních funkcí umožňuje zobrazit závislosti spolu 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. Spuštěním dotnet restore příkazu můžete ručně obnovit závislosti a nástroje specifické pro projekt zadané v souboru 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ž nějaký 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 ten, který dosahuje úkolu 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 projektu .csproj .