Føj pakker til dit .NET-projekt

Fuldført

.NET leveres med mange kernebiblioteker, der håndterer alt fra administration af filer til HTTP til komprimering af filer. Der er også et enormt økosystem af tredjepartsbiblioteker. Du kan bruge NuGet, .NET Package Manager, til at installere disse biblioteker og bruge dem i dit program.

.NET og dets økosystem bruger ordet afhængighed meget. En pakkeafhængighed er et tredjepartsbibliotek. Det er et stykke genanvendelig kode, der udfører noget, og som du kan føje til dit program. Tredjepartsbiblioteket er noget, dit program afhænger af, at fungerer, og derfor er ordet afhængighed.

Du kan tænke på tredjepartsbiblioteket som en pakke, der er gemt i et lager. En pakke består af et eller flere biblioteker, som du kan føje til dit program, så du kan drage fordel af dets funktioner.

Her fokuserer vi på pakkeafhængigheder. Et .NET-projekt kan dog have andre typer afhængigheder ud over pakkeafhængigheder. Herunder strukturer, analysatorer, projektreferencer og delte projektafhængigheder.

Find ud af, om du har brug for en pakke

Hvordan ved du, om du har brug for en pakke til dit projekt? Det er et kompliceret spørgsmål, der involverer et par faktorer:

  • Bedre kode: Spørg dig selv, om du f.eks. har at gøre med en opgave som f.eks. sikkerhed, og forsøger at implementere godkendelse og godkendelse. Det er en opgave, du skal få ret for at beskytte dine data og dine kunders data. Der er standardmønstre derude og biblioteker, som mange udviklere bruger. Disse biblioteker implementerer funktioner, som du sandsynligvis altid har brug for, og problemer bliver rettet, efterhånden som de opstår. Du bør bruge sådanne biblioteker i stedet for at oprette dine egne. Det er ikke sandsynligt, at du selv skriver koden, fordi der er så mange edge-sager, som du skal overveje.
  • Sparer tid: Du kan sikkert selv bygge de fleste ting, f.eks. biblioteker med hjælpeprogrammer eller brugergrænsefladekomponenter, men det tager tid. Selvom dine resultater kan sammenlignes med det, der er tilgængeligt, er det ikke en god ide at bruge din tid til at replikere arbejdet.
  • Vedligeholdelse: Alle biblioteker og apps skal vedligeholdes før eller senere. Vedligeholdelse omfatter tilføjelse af nye funktioner og rettelse af fejl. Er det en god brug af din tid eller dit teams tid til at vedligeholde et bibliotek, eller er det bedre at lade et softwareteam med åben kildekode håndtere det?

Evaluer en pakke

Før du installerer et bibliotek, kan det være en god idé at undersøge de afhængigheder, det er afhængig af. Disse afhængigheder kan tilskynde dig til at bruge pakken, eller de kan afskrække dig. Her er nogle faktorer, du skal overveje, når du vælger en afhængighed for dit projekt:

  • Størrelse: Antallet af afhængigheder kan medføre et stort fodaftryk. Hvis du har en begrænset båndbredde eller har andre hardwarebegrænsninger, kan denne faktor være et problem.
  • Licensering: Du skal sikre dig, at den licens, der er tildelt biblioteket, dækker din tilsigtede brug, uanset om denne brug er kommerciel, personlig eller akademisk.
  • Aktiv vedligeholdelse: Det kan være et problem, hvis pakken er afhængig af en afhængighed, der ikke vedligeholdes aktivt. Afhængigheden kan frarådes eller opdateres i lang tid.

Du kan få mere at vide om en pakke, før du installerer den, ved at gå til https://www.nuget.org/packages/<package name>. Denne URL-adresse fører dig til en detaljeret side for pakken. Vælg rullelisten afhængigheder for at se, hvilke pakker den er afhængig af for at fungere.

Antallet af angivne afhængigheder fortæller muligvis ikke hele sandheden. Hvis du downloader en pakke, kan du ende med en pakkeafhængighed, der indeholder mange pakker. Hvorfor er det sådan? Hver pakke har en liste over afhængigheder. For at sikre, at du kan bruge en pakke, gennemsøges og downloades alle afhængigheder, når du kører kommandoen dotnet add package <package name>.

Installér en pakke

Der er flere måder at installere pakker på. Der er en indbygget kommandolinje og grafisk brugergrænseflade til en pakkestyring i Visual Studio og Visual Studio til Mac. Du kan manuelt føje pakkereferencer til din projektfil, eller du kan installere dem via et kommandolinjegrænsefladeværktøj, f.eks. Paket eller .NET Core CLI.

I dette modul bruger vi den indbyggede kommandolinjegrænseflade .NET Core til at installere pakker. Du kan føje en pakke til dit .NET-projekt ved at aktivere en kommando i terminalen. En typisk installationskommando ser sådan ud: dotnet add package <name of package>. Når du kører kommandoen add package, opretter kommandolinjeværktøjet forbindelse til en global registreringsdatabase, henter pakken og gemmer den på en cachelagret mappeplacering, som alle projekter kan bruge.

Når projektet er installeret og bygget, føjes referencerne til dine fejlfindings- eller udgivelsesmapper. Projektmappen ser nogenlunde sådan ud:

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

Find en pakke

Individuelle udviklere kan bruge den globale registreringsdatabase på NuGet.org til at finde og downloade pakker, som de har brug for til deres apps. En virksomhed kan have en strategi for, hvilke pakker der er OK at bruge, og hvor de kan findes.

Skærmbillede af NuGet.org, der viser en liste over populære pakker.

Pakker kan være placeret mange forskellige steder. Nogle af disse kilder kan være offentligt tilgængelige, og nogle kan være begrænset og kun tilgængelige for medarbejdere i en bestemt virksomhed. Her er nogle steder, hvor pakker kan være placeret:

  • Registre: Et eksempel kan være en global registreringsdatabase, f.eks. registreringsdatabasen NuGet.org. Du kan hoste dine egne registre, der kan være enten private eller offentlige. Tjenester som GitHub og Azure DevOps gør private registre tilgængelige.
  • Filer: Du kan installere en pakke fra en lokal mappe. Installation fra en pakke er almindelig, når du forsøger at udvikle dine egne .NET-biblioteker og vil teste pakken lokalt. Eller af en eller anden grund vil du ikke bruge en registreringsdatabase.

diagram, der illustrerer relationen mellem pakkeoprettere, pakkeværter og pakkeforbrugere.

Værktøjet NuGet i registreringsdatabasen og dotnet

Når du kører dotnet add package <name of dependency>, går .NET til en global registreringsdatabase, der kaldes NuGet.org registreringsdatabasen på https://nuget.org, og søger efter den kode, der skal hentes. Du kan også gennemse denne side for pakker, hvis du besøger den ved hjælp af en browser. Hver pakke har et dedikeret websted, som du kan gå til.

Skærmbillede af landingssiden for en NuGet-pakke.

På disse websteder kan du få mere at vide om, hvor kildekoden er placeret. Du kan også finde oplysninger som målepunkter for downloads og oplysninger om vedligeholdelse.

Skærmbillede af oplysninger og målepunkter på en NuGet-pakke.

.NET-kommandoer

Indtil videre har du lært, hvordan du kan installere afhængigheder ved hjælp af kommandolinjegrænsefladen for .NET Core. Men dette værktøj kan gøre meget mere.

Kommandolinjegrænsefladen for .NET Core har en hel del kommandoer. Kommandoerne hjælper dig med opgaver som installation af pakker, oprettelse af pakker og initialisering af .NET-projekter. Du behøver ikke at kende alle kommandoerne i detaljer. Når du starter med .NET, vil du sandsynligvis kun bruge et undersæt af kommandoerne. Når du udvider brugen af .NET, kan du bruge flere kommandoer fra forskellige kategorier.

For at hjælpe dig med at huske, hvad kommandoerne gør, hjælper det at tænke på dem som tilhører kategorier:

  • Administrer afhængigheder: Kommandoer i denne kategori omfatter installation, fjernelse, oprydning efter pakkeinstallationer og pakkeopdateringer.
  • Kør programmer: Værktøjet .NET Core kan hjælpe dig med at administrere flow i din programudvikling. Eksempler på programflows er kørsel af test, oprettelse af kode og kørsel af migreringskommandoer for at opgradere projekter.
  • Forfatter og publicer pakker: Flere kommandoer kan hjælpe dig med opgaver, f.eks. oprettelse af en komprimeret pakke og push af pakken til en registreringsdatabase.

Hvis du vil have en detaljeret liste over alle kommandoer, skal du angive dotnet --help i terminalen.

Sådan installerer du en pakke

Brug kommandoen dotnet add package <dependency name> til at installere en normal afhængighed, der er beregnet til at blive brugt som en del af dit program.

Seddel

Du kan installere nogle pakker globalt. Disse pakker er ikke beregnet til at blive importeret til projektet. Derfor er mange globale pakker CLI-værktøjer eller -skabeloner. Du kan også installere disse globale værktøjer fra et pakkelager. Installér værktøjer ved hjælp af kommandoen dotnet tool install <name of package>. Installér skabeloner ved hjælp af kommandoen dotnet new -i <name of package>.

Efter installationen

De installerede pakker er angivet i afsnittet dependencies i din .csproj-fil. Hvis du vil se, hvilke pakker der er i mappen , kan du angive dotnet list package.

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

Denne kommando viser kun pakker på øverste niveau og ikke afhængigheder for de pakker, vi kalder transitive pakker. Denne kommando er god til et hurtigt kig. Hvis du vil have en mere detaljeret visning, kan du angive alle transitive pakker. Når du gør det, ser kommandoen list sådan ud:

dotnet list package --include-transitive

Med inkludering af transitiver kan du se afhængigheder sammen med alle de pakker, du har installeret. Hvis du kører dotnet list package --include-transitive, får du muligvis vist dette output:

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

Gendan afhængigheder

Når du opretter eller kloner et projekt, downloades eller installeres de inkluderede afhængigheder ikke, før du bygger dit projekt. Du kan manuelt gendanne afhængigheder og projektspecifikke værktøjer, der er angivet i projektfilen, ved at køre kommandoen dotnet restore. I de fleste tilfælde behøver du ikke at bruge kommandoen eksplicit. NuGet-gendannelse kører implicit, hvis det er nødvendigt, når du kører kommandoer som new, buildog run.

Ryd op i afhængigheder

Før eller senere vil du sandsynligvis indse, at du ikke længere har brug for en pakke. Du kan også se, at den pakke, du har installeret, ikke er den, du har brug for. Måske har du fundet en, der udfører en opgave bedre. Uanset årsagen skal du fjerne afhængigheder, som du ikke bruger. Det holder tingene rene. Afhængigheder optager også plads.

Hvis du vil fjerne en pakke fra projektet, skal du bruge kommandoen remove på følgende måde: dotnet remove package <name of dependency>. Denne kommando fjerner pakken fra projektets .csproj fil.