Csomagok felvétele a .NET-projektbe
A .NET-hez hozzátartozik több alapvető kódtár is, amelyek a fájlok kezelésétől a HTTP-n át a tömörítésig sok mindent kezelnek. Létezik emellett a külső kódtárak kiterjedt ökoszisztémája is. A .NET csomagkezelője, a NuGet használatával telepítheti ezeket a kódtárakat, majd felhasználhatja őket az alkalmazásban.
A .NET és ökoszisztémája kapcsán gyakran használt szó a függőség. A csomagfüggőségek külső kódtárak. Ez egy újrafelhasználható kód, amely végrehajt valamit, és amelyet hozzáadhat az alkalmazáshoz. Az alkalmazás működése ettől a külső kódtártól függ, ezért nevezzük azt függőségnek.
A harmadik féltől származó kódtárat csomagként tekintheti, és egy adattárban tárolja. Egy csomag tartalma egy vagy több olyan könyvtár lehet, amelyet az alkalmazáshoz adhat, hogy felhasználhassa annak funkcióit.
Itt a csomagfüggőségekkel foglalkozunk. A .NET-projektek más típusú függőségekkel is rendelkezhetnek, például keretrendszerekkel, elemzőkkel, projekthivatkozásokkal és megosztott projektfüggőségekkel, valamint csomagfüggőségekkel.
Annak meghatározása, hogy szükség van-e csomagra
Honnan lehet megtudni, hogy a projekthez szükség van egy csomagra? Ez összetett kérdés, amelyet több tényező határoz meg, nevezetesen a következők:
- Jobb kód beszerzése: Kérdezze meg magától, hogy egy olyan feladattal foglalkozik-e, mint például a biztonság, és megpróbál hitelesítést és engedélyezést implementálni. A saját adatok és az ügyfelek adatainak védelme érdekében is fontos, hogy ezen a területen minden rendben legyen. Léteznek erre standard minták, és sok fejlesztő által használt kódtárak. Ezek a kódtárak olyan funkciókat implementálnak, amelyekre valószínűleg mindig szüksége lesz, és a problémák a felmerülő problémákat kijavítják. Érdemes ezeket a kódtárakat felhasználni ahelyett, hogy sajátokat hozna létre. Nem valószínű, hogy saját maga is megírja a kódot, mert olyan sok peremes eset van, amelyet figyelembe kell vennie.
- Időt takaríthat meg: A legtöbb dolgot saját maga is létrehozhatja, például segédprogram- vagy felhasználói felületi összetevőtárakat, de ez időt vesz igénybe. Ha feleslegesen ír kódot, az akkor sem az idő hatékony felhasználása, ha a végeredmény összemérhető a már meglévővel.
- Karbantartás: Minden kódtárnak és alkalmazásnak előbb vagy utóbb karbantartásra van szüksége. A karbantartás során új funkciókat ad hozzá, és kijavítja a hibákat. Jól használja ki az idejét, vagy a csapata idejét egy könyvtár karbantartására, vagy jobb, ha egy nyílt forráskódú szoftvercsapat kezeli?
Csomag kiértékelése
A kódtár telepítése előtt érdemes lehet megvizsgálni azokat a függőségeket, amelyekre támaszkodik. Ezek a függőségek a csomag használatára is ösztönözhetik Önt, de akár el is tántoríthatják attól. A projekt függőségeinek kiválasztásakor érdemes figyelembe venni azok néhány jellemzőjét:
- Méret: A függőségek száma nagy lábnyomot eredményezhet. Ha korlátozott a sávszélesség, vagy a hardver más korlátait kell figyelembe vennie, akkor ez is problémát okozhat.
- Licencelés: Gondoskodnia kell arról, hogy a könyvtárhoz megadott licenc kiterjedjen a kívánt használatra, függetlenül attól, hogy a felhasználás kereskedelmi, személyes vagy tudományos jellegű-e.
- Aktív karbantartás: Probléma lehet, ha a csomag elavult vagy hosszú ideje nem frissített függőségre támaszkodik.
A telepítés előtt az https://www.nuget.org/packages/<package name>
oldalon további információt találhat a csomagokról. Ez az URL-cím a csomag részletes lapjára viszi. Válassza ki a Függőségek legördülő listát, és nézze meg, hogy mely csomagokra támaszkodik a függvény.
A felsorolt függőségek száma önmagában nem feltétlenül árul el mindent. Ha letölt egy csomagot, előfordulhat, hogy a csomagfüggőségben több tucat csomag lesz. Miért? Minden csomaghoz hozzátartozik a függőségei listája. A csomag használhatósága érdekében az dotnet add package <package name>
parancs kiadásakor a rendszer az összes csomagot sorra veszi és letölti.
Csomag telepítése
A csomagok számos módon telepíthetők. A Visual Studio és a Visual Studio for Mac beépített csomagkezelői parancssorral és grafikus felhasználói felülettel rendelkezik. Manuálisan is hozzáadhat csomaghivatkozásokat a projektfájlhoz, vagy telepítheti őket egy parancssori felületi eszközzel (például a Pakettel vagy a .NET Core CLI-vel).
Ebben a modulban a beépített .NET Core CLI-vel telepítjük a csomagokat. A terminálban kiadott paranccsal egy csomagot vehet fel a .NET-projektbe. Egy tipikus telepítési parancs a következőképpen néz ki: dotnet add package <name of package>
. A add package
parancs futtatásakor a parancssori eszköz csatlakozik a globális regisztrációs adatbázishoz, letölti a csomagot, és elhelyezi azt egy gyorsítótárazott mappában, amelyet minden projekt felhasználhat.
A projekt telepítése és buildelése után a rendszer hozzáadja a hivatkozásokat a hibakeresési vagy kiadási mappákhoz. A projektkönyvtár így néz ki:
-| bin/
---| Debug/
------| net3.1
--------| <files included in the dependency>
Csomag megkeresése
Az önálló fejlesztők a NuGet.org globális regisztrációs adatbázisát használhatják az alkalmazásaikhoz szükséges csomagok megkeresésére és letöltésére. Egy vállalatnál egy stratégia is érvényben lehet a megfelelő csomagokra és azok helyére vonatkozóan.
A csomagok számos különböző helyen elhelyezhetők. Előfordulhat, hogy ezek a források nyilvánosan elérhetők, egyes források pedig korlátozottak, és csak egy adott vállalat alkalmazottai számára érhetők el. Íme néhány hely, ahol a csomagok lehetnek:
- Regisztrációs adatbázisok: Ilyen lehet például egy globális beállításjegyzék, például a NuGet.org beállításjegyzék. Ön is üzemeltethet saját regisztrációs adatbázist, amely lehet privát vagy nyilvános. Az olyan szolgáltatások, mint a GitHub és az Azure DevOps, privát regisztrációs adatbázisokat is kínálnak.
- Fájlok: Egy csomagot helyi mappából telepíthet. A csomagból való telepítés gyakori, ha saját .NET-kódtárakat próbál létrehozni, és helyileg szeretné tesztelni a csomagot, vagy valamilyen okból nem szeretne beállításjegyzéket használni.
A NuGet regisztrációs adatbázisa és a dotnet eszköz
Az dotnet add package <name of dependency>
parancs futtatásakor a .NET egy globális regisztrációs adatbázishoz, az úgynevezett NuGet.org adatbázishoz fordul, és ott keresi a letöltendő kódot. Itt található https://nuget.org: . Ha böngészővel látogatja meg, ezen a lapon csomagokat is kereshet. Minden csomaghoz tartozik egy dedikált webhely, ahová mehet.
Ezeken a webhelyeken többet megtudhat a forráskód helyéről. A letöltések metrikái és a karbantartással kapcsolatos információk is megtalálhatók.
.NET-parancsok
Az eddigiekben azt tanulhatta meg, hogyan telepíthet függőségeket a .NET Core parancssori felületének használatával. De az eszköz ennél sokkal többre is képes.
A .NET Core CLI számos paranccsal rendelkezik. A parancsokkal olyan feladatokat végezhet el, mint a csomagok telepítése és elkészítése, valamint .NET-projektek inicializálása. Nem kell minden parancsot részletesen ismernie. A.NET-tel történő ismerkedés során valószínűleg csak néhány parancsot fog használni. Ahogyan egyre több mindenre kezdi használni a .NET-et, egyre több parancsot is használhat, többféle kategóriában.
A parancsok szerepének megjegyzése érdekében célszerű őket kategóriákra osztani:
- Függőségek kezelése: Az ebben a kategóriában szereplő parancsok a telepítésre, az eltávolításra, a csomagtelepítések utáni törlésre és a csomagfrissítésekre vonatkoznak.
- Programok futtatása: A .NET Core eszköz segítségével kezelheti az alkalmazásfejlesztés folyamatait. Ilyen folyamat például a tesztek futtatása, a kód elkészítése, és a projektek frissítését szolgáló migrálási parancsok futtatása.
- Csomagok létrehozása és közzététele: Számos parancs segíthet olyan feladatok elvégzésében, mint a tömörített csomagok létrehozása és a csomag egy regisztrációs adatbázisba való leküldése.
Részletes listát a parancsokról az dotnet --help
paranccsal jeleníthet meg.
Csomag telepítése
dotnet add package <dependency name>
A parancs használatával telepíthet egy normál függőséget, amelyet az alkalmazás részeként kíván használni.
Megjegyzés:
Egyes csomagokat globálisan telepíthet. Ezeket a csomagokat nem kell importálni a projektbe. Sok globális csomag éppen ezért parancssori eszköz vagy sablon. Ezeket a globális eszközöket is telepítheti egy csomagtárból. Eszközöket a dotnet tool install <name of package>
paranccsal telepíthet. Sablonokat a dotnet new -i <name of package>
paranccsal telepíthet.
A telepítés után
A telepített csomagok a .csproj-fájl dependencies
szakaszában vannak feltüntetve. Az dotnet list package
paranccsal megtekintheti, mely csomagok találhatók a mappában.
Project 'DotNetDependencies' has the following package references
[net8.0]:
Top-level Package Requested Resolved
> Humanizer 2.7.9 2.7.9
Ez a parancs csak a legfelső szintű csomagokat sorolja fel, az átvitt csomagoknak nevezett csomagok függőségeit nem. Kényelmesen kínál gyors bepillantást. A részletesebb vizsgálathoz az összes tranzitív csomag is kilistázható. Ha így tesz, a parancs a list
következőképpen néz ki:
dotnet list package --include-transitive
A tranzitív csomagok belefoglalásával a függőségeket is megtekintheti az összes telepített csomag mellett. Futtatás dotnet list package --include-transitive
esetén ez a kimenet jelenhet meg:
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
...
Függőségek helyreállítása
Projekt létrehozásakor vagy klónozásakor a program nem tölti le vagy telepíti a belefoglalt függőségeket, amíg létre nem hozza a projektet. A parancs futtatásával dotnet restore
manuálisan visszaállíthatja a függőségeket, valamint a projektfájlban megadott projektspecifikus eszközöket. A legtöbb esetben nem szükséges explicit módon kiadnia a parancsot. A NuGet-visszaállítás implicit módon, ha szükséges, az olyan parancsok futtatásakor, mint az new
, build
és run
.
Függőségek törlése
Előbb-utóbb valószínűleg rájön, hogy már nincs szüksége csomagra, vagy észreveheti, hogy nem a telepített csomagra van szüksége. Esetleg talált egyet, amely hatékonyabban végzi el az adott feladatot. Bármi is az ok, célszerű eltávolítani a nem használt függőségeket. Így átlátható maradhat a projekt. A függőségek emellett is helyet foglalnak.
Ha el szeretne távolítani egy csomagot a projektből, használja a remove
következő parancsot: dotnet remove package <name of dependency>
. Ez a parancs eltávolítja a csomagot a projekt .csproj fájljából.