Pakketten toevoegen aan het .NET-project
.NET wordt geleverd met veel kernbibliotheken waarmee van alles kan worden verwerkt, van het beheer van bestanden tot HTTP tot het comprimeren van bestanden. Er bestaat ook een zeer groot ecosysteem met bibliotheken van derden. U kunt NuGet, het .NET-pakketbeheer, gebruiken om deze bibliotheken te installeren en ze in uw toepassing te gebruiken.
.NET en het bijbehorende ecosysteem maken veel gebruik van het woord afhankelijkheid. Een pakketafhankelijkheid is een bibliotheek van derden. Het is een stukje herbruikbare code waarmee iets wordt gerealiseerd en dat u aan uw toepassing kunt toevoegen. De bibliotheek van derden is iets waarvan uw toepassing afhankelijk is om te kunnen functioneren, vandaar ook het woord afhankelijkheid.
U kunt de bibliotheek van derden beschouwen als een pakket dat is opgeslagen in een opslagplaats. Een pakket bestaat uit een of meer bibliotheken die u kunt toevoegen aan uw toepassing, zodat u kunt profiteren van de functies ervan.
Hier richten we ons op pakketafhankelijkheden. Een .NET-project kan echter andere typen afhankelijkheden hebben, naast pakketafhankelijkheden. Inclusief frameworks, analyses, projectverwijzingen en gedeelde projectafhankelijkheden.
Bepalen of u een pakket nodig hebt
Hoe weet u nu zeker of u een pakket voor uw project nodig hebt? Het is een gecompliceerde vraag die enkele factoren omvat:
- Betere code krijgen: Vraag uzelf of u te maken hebt met een taak als beveiliging, bijvoorbeeld en probeert verificatie en autorisatie te implementeren. Het is belangrijk deze taak goed uit te voeren om uw gegevens en die van uw klant te beveiligen. Er bestaan standaardpatronen en bibliotheken die door veel ontwikkelaars worden gebruikt. Deze bibliotheken implementeren functies die u waarschijnlijk altijd nodig hebt en problemen worden gepatcht zodra deze zich voordoen. U kunt beter dergelijke bibliotheken gebruiken in plaats van zelf bibliotheken te maken. U hoeft de code waarschijnlijk niet zelf te schrijven, omdat er zoveel edge-cases zijn die u moet overwegen.
- Tijd besparen: U kunt waarschijnlijk zelf de meeste dingen bouwen, zoals hulpprogramma- of UI-onderdeelbibliotheken, maar het kost wel tijd. Zelfs als uw resultaten vergelijkbaar zijn met wat er beschikbaar is, is het geen goed gebruik van uw tijd om het werk te repliceren.
- Onderhoud: alle bibliotheken en apps hebben vroeg of later onderhoud nodig. Onderhoud omvat het toevoegen van nieuwe functies en het corrigeren van bugs. Is het een goed gebruik van uw tijd of de tijd van uw team om een bibliotheek te onderhouden of is het beter om een opensource-softwareteam dit te laten afhandelen?
Een pakket evalueren
Voordat u een bibliotheek installeert, wilt u mogelijk de afhankelijkheden controleren waarvan deze afhankelijk is. Deze afhankelijkheden sporen u wellicht aan het pakket te gebruiken, of misschien ontmoedigen ze u juist. Hier volgen enkele factoren waarmee u rekening moet houden wanneer u een afhankelijkheid voor uw project selecteert:
- Grootte: Het aantal afhankelijkheden kan een grote footprint maken. Als u een beperkte bandbreedte hebt of andere hardwarebeperkingen hebt, kan dit een probleem zijn.
- Licentieverlening: U moet ervoor zorgen dat de licentie die wordt verleend voor de bibliotheek betrekking heeft op uw beoogde gebruik, of dat nu commercieel, persoonlijk of academisch is.
- Actief onderhoud: het kan een probleem zijn als uw pakket afhankelijk is van een afhankelijkheid die niet actief wordt onderhouden. De afhankelijkheid kan gedurende lange tijd worden afgeschaft of niet worden bijgewerkt.
U kunt meer te weten komen over een pakket voordat u dit installeert door naar https://www.nuget.org/packages/<package name>
te gaan. Met deze URL gaat u naar een gedetailleerde pagina voor het pakket. Selecteer de vervolgkeuzelijst Afhankelijkheden om te zien op welke pakketten deze afhankelijk is van de functie.
Het aantal vermelde afhankelijkheden vertelt mogelijk niet de hele waarheid. Als u een pakket downloadt, eindigt u mogelijk met een pakketafhankelijkheid die tientallen pakketten bevat. Waarom is dat? Elk pakket heeft een lijst met afhankelijkheden. Om te garanderen dat u een pakket kunt gebruiken, worden alle afhankelijkheden verkend en gedownload wanneer u de dotnet add package <package name>
-opdracht uitvoert.
Een pakket installeren
Er zijn verschillende manieren om pakketten te installeren. In Visual Studio en Visual Studio voor Mac zijn een ingebouwde opdrachtregel en GUI beschikbaar voor pakketbeheer. U kunt pakketverwijzingen handmatig toevoegen aan uw projectbestand of u kunt ze installeren via een opdrachtregelinterfaceprogramma (CLI), zoals Paket of de .NET Core CLI.
Voor deze module gebruiken we de ingebouwde .NET Core CLI om pakketten te installeren. U kunt een pakket toevoegen aan het .NET-project door de opdracht in een terminal aan te roepen. Een typische installatieopdracht ziet er als volgt uit: dotnet add package <name of package>
. Wanneer u de opdracht add package
uitvoert, maakt het opdrachtregelprogramma verbinding met een globaal register, haalt dit het pakket op en plaatst het in een map in cache die door alle projecten kan worden gebruikt.
Nadat uw project is geïnstalleerd en gebouwd, worden de verwijzingen toegevoegd aan uw foutopsporings- of releasemappen. Uw projectmap ziet er ongeveer als volgt uit:
-| bin/
---| Debug/
------| net3.1
--------| <files included in the dependency>
Een pakket zoeken
Individuele ontwikkelaars kunnen het globale register op NuGet.org gebruiken om pakketten te zoeken en te downloaden die ze nodig hebben voor hun apps. Een bedrijf kan een strategie erop hebben ingericht welke pakketten bruikbaar zijn en waar u ze kunt vinden.
Pakketten kunnen zich op verschillende locaties bevinden. Sommige van deze bronnen zijn mogelijk openbaar beschikbaar en sommige zijn mogelijk beperkt en alleen beschikbaar voor werknemers van een specifiek bedrijf. Hier volgen enkele plaatsen waar pakketten zich kunnen bevinden:
- Registers: Een voorbeeld hiervan is een globaal register, zoals het NuGet.org register. U kunt uw eigen registers hosten. Deze kunnen privé of openbaar zijn. Services zoals GitHub en Azure DevOps stellen persoonlijke registers beschikbaar.
- Bestanden: U kunt een pakket installeren vanuit een lokale map. De installatie van een pakket is gebruikelijk wanneer u uw eigen .NET-bibliotheken probeert te ontwikkelen en het pakket lokaal wilt testen. Of om een of andere reden wilt u geen register gebruiken.
NuGet-register en dotnet-hulpprogramma
Wanneer u uitvoert dotnet add package <name of dependency>
, gaat .NET naar een globaal register met de naam het NuGet.org register dat zich bevindt https://nuget.org en zoekt u naar de code die moet worden gedownload. U kunt ook door deze pagina bladeren voor pakketten als u deze bezoekt met behulp van een browser. Elk pakket heeft een speciale website waarop u kunt gaan.
Op deze sites kunt u meer informatie vinden over waar de broncode zich bevindt. U kunt ook informatie vinden zoals metrische gegevens over downloads en informatie over onderhoud.
.NET-opdrachten
Tot nu toe hebt u geleerd hoe u afhankelijkheden kunt installeren met behulp van de .NET Core CLI. Dit hulpprogramma kan echter nog veel meer doen.
.NET Core CLI kent vele opdrachten. Met de opdrachten kunt u taken uitvoeren, zoals pakketten installeren en ontwerpen en .NET-projecten initialiseren. U hoeft de opdrachten niet allemaal tot in detail te kennen. Wanneer u begint met .NET, zult u waarschijnlijk slechts een klein gedeelte van de opdrachten gebruiken. Wanneer u het gebruik van .NET uitbreidt, kunt u meer opdrachten uit verschillende categorieën gebruiken.
Om te onthouden wat de opdrachten doen, is het handig om ze te beschouwen als behorend bij categorieën:
- Afhankelijkheden beheren: Opdrachten in deze categorie hebben betrekking op installatie, verwijdering, opschonen na pakketinstallaties en pakketupdates.
- Programma's uitvoeren: het hulpprogramma .NET Core kan u helpen bij het beheren van stromen in de ontwikkeling van uw toepassing. Voorbeelden van stromen voor toepassingen zijn tests uitvoeren, uw code compileren en migratieopdrachten uitvoeren voor het upgraden van projecten.
- Pakketten ontwerpen en publiceren: verschillende opdrachten kunnen u helpen bij taken zoals het maken van een gecomprimeerd pakket en het pushen van het pakket naar een register.
Als u een gedetailleerde lijst met alle opdrachten wilt zien, voert u dotnet --help
in de terminal in.
Een pakket installeren
Gebruik de dotnet add package <dependency name>
opdracht om een normale afhankelijkheid te installeren die moet worden gebruikt als onderdeel van uw toepassing.
Notitie
U kunt sommige pakketten globaal installeren. Deze pakketten zijn niet bedoeld om in uw project te worden geïmporteerd. Daarom zijn veel globale pakketten CLI-hulpprogramma's of sjablonen. U kunt deze globale hulpprogramma's ook vanuit een pakketopslagplaats installeren. Installeer hulpprogramma's met behulp van de opdracht dotnet tool install <name of package>
. Installeer sjablonen met behulp van de opdracht dotnet new -i <name of package>
.
Na de installatie
De geïnstalleerde pakketten worden weergegeven in de dependencies
sectie van het .csproj
bestand. Als u wilt weten welke pakketten zich in de map bevinden, kunt u dotnet list package
invoeren.
Project 'DotNetDependencies' has the following package references
[net8.0]:
Top-level Package Requested Resolved
> Humanizer 2.7.9 2.7.9
Met deze opdracht worden alleen de pakketten op het hoogste niveau vermeld en niet afhankelijkheden van die pakketten die we transitieve pakketten noemen. Deze opdracht is handig voor een kort overzicht. Als u een uitgebreidere weergave wilt, kunt u alle transitieve pakketten weergeven. Wanneer u dit doet, ziet de list
opdracht er als volgt uit:
dotnet list package --include-transitive
Met transitieve onderdelen kunt u afhankelijkheden zien, samen met alle pakketten die u hebt geïnstalleerd. Als u uitvoert dotnet list package --include-transitive
, krijgt u mogelijk deze uitvoer:
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
...
Afhankelijkheden herstellen
Wanneer u een project maakt of kloont, worden de opgenomen afhankelijkheden pas gedownload of geïnstalleerd nadat u uw project hebt gemaakt. U kunt afhankelijkheden en projectspecifieke hulpprogramma's die zijn opgegeven in het projectbestand handmatig herstellen door de opdracht uit te dotnet restore
voeren. In de meeste gevallen hoeft u de opdracht niet expliciet te gebruiken. NuGet-herstel wordt impliciet uitgevoerd, indien nodig, wanneer u opdrachten zoals new
, build
en run
.
Afhankelijkheden opschonen
Op een gegeven moment zult u zich waarschijnlijk realiseren dat u een bepaald pakket niet meer nodig hebt. Of u realiseert zich misschien dat het pakket dat u hebt geïnstalleerd niet het pakket is dat u nodig hebt. Misschien hebt u er een gevonden die een taak beter uitvoert. Wat de reden ook is, afhankelijkheden die u niet gebruikt kunt u het beste verwijderen. Op die manier houdt u het overzicht. Afhankelijkheden nemen ook ruimte in beslag.
Als u een pakket uit uw project wilt verwijderen, gebruikt u de remove
opdracht als volgt: dotnet remove package <name of dependency>
Met deze opdracht wordt het pakket verwijderd uit het projectbestand .csproj
.