Legge til pakker i .NET-prosjektet

Fullført

.NET leveres med mange kjernebiblioteker som håndterer alt fra administrasjon av filer til HTTP til komprimering av filer. Det er også et stort økosystem av tredjepartsbiblioteker. Du kan bruke NuGet, .NET-pakkebehandling, til å installere disse bibliotekene og bruke dem i programmet.

.NET og økosystemet bruker ordet avhengighet mye. En pakkeavhengighet er et tredjepartsbibliotek. Det er en kode som kan brukes på nytt, og som du kan legge til i programmet. Tredjepartsbiblioteket er noe programmet avhenger av til å fungere, derav ordet avhengighet.

Du kan tenke på tredjepartsbiblioteket som en pakke som er lagret i et repositorium. En pakke består av ett eller flere biblioteker som du kan legge til i programmet, slik at du kan dra nytte av funksjonene.

Her fokuserer vi på pakkeavhengigheter. Et .NET-prosjekt kan imidlertid ha andre typer avhengigheter i tillegg til pakkeavhengigheter. Inkludert rammeverk, analyser, prosjektreferanser og delte prosjektavhengigheter.

Finne ut om du trenger en pakke

Hvordan vet du om du trenger en pakke for prosjektet? Det er et komplisert spørsmål som involverer noen faktorer:

  • Få bedre kode: Spør deg selv om du har å gjøre med en oppgave som sikkerhet, for eksempel, og prøver å implementere godkjenning og autorisasjon. Det er en oppgave du må få riktig for å beskytte dataene og kundenes data. Det finnes standardmønstre der ute og biblioteker som mange utviklere bruker. Disse bibliotekene implementerer funksjoner som du sannsynligvis alltid trenger, og problemer oppdateres etter hvert som de oppstår. Du bør bruke slike biblioteker i stedet for å opprette dine egne. Du vil sannsynligvis ikke skrive koden også selv, fordi det er så mange kanttilfeller som du må vurdere.
  • Spare tid: Du kan sannsynligvis bygge det meste selv, for eksempel verktøy- eller grensesnittkomponentbiblioteker, men det tar tid. Selv om resultatene er sammenlignbare med det som er tilgjengelig, er det ikke en god bruk av tiden din til å replikere arbeidet.
  • Vedlikehold: Alle biblioteker og apper trenger vedlikehold før eller senere. Vedlikehold innebærer å legge til nye funksjoner og korrigere feil. Er det en god bruk av tiden din eller teamets tid til å vedlikeholde et bibliotek, eller er det bedre å la et programvareteam med åpen kildekode håndtere det?

Evaluere en pakke

Før du installerer et bibliotek, bør du undersøke avhengighetene det er avhengig av. Disse avhengighetene kan oppmuntre deg til å bruke pakken, eller de kan avskrekke deg. Her er noen faktorer du bør vurdere når du velger en avhengighet for prosjektet:

  • Størrelse: Antall avhengigheter kan skape et stort fotavtrykk. Hvis du har begrenset båndbredde eller har andre maskinvarebegrensninger, kan denne faktoren være en bekymring.
  • Lisensiering: Du må sørge for at lisensen som er gitt for biblioteket, dekker den tiltenkte bruken, enten denne bruken er kommersiell, personlig eller akademisk.
  • Aktivt vedlikehold: Det kan være et problem hvis pakken er avhengig av en avhengighet som ikke vedlikeholdes aktivt. Avhengigheten kan avskrives eller ikke oppdateres på lang tid.

Du kan lære mer om en pakke før du installerer den ved å gå til https://www.nuget.org/packages/<package name>. Denne URL-adressen tar deg til en detaljert side for pakken. Velg rullegardinlisten Avhengigheter for å se hvilke pakker den er avhengig av for å fungere.

Antall oppførte avhengigheter forteller kanskje ikke hele sannheten. Hvis du laster ned en pakke, kan du ende opp med en pakkeavhengighet som inneholder dusinvis av pakker. Hvorfor er det det? Hver pakke har en liste over avhengigheter. For å sikre at du kan bruke en pakke, kravlesøkes og lastes alle avhengigheter ned når du kjører kommandoen dotnet add package <package name>.

Installere en pakke

Det finnes flere måter å installere pakker på. Det finnes et innebygd kommandolinje- og grafisk brukergrensesnitt for en pakkebehandling i Visual Studio og Visual Studio for Mac. Du kan legge til pakkereferanser manuelt i prosjektfilen, eller du kan installere dem via et kommandolinjegrensesnittverktøy (CLI), for eksempel Paket eller .NET Core CLI.

For denne modulen bruker vi den innebygde .NET Core CLI til å installere pakker. Du kan legge til en pakke i .NET-prosjektet ved å aktivere en kommando i terminalen. En vanlig installasjonskommando ser slik ut: dotnet add package <name of package>. Når du kjører kommandoen add package, kobler kommandolinjeverktøyet til et globalt register, henter pakken og lagrer den på en bufret mappeplassering som alle prosjekter kan bruke.

Når prosjektet er installert og bygget, legges referansene til i feilsøkings- eller utgivelsesmappene. Prosjektkatalogen ser omtrent slik ut:

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

Finn en pakke

Individuelle utviklere kan bruke det globale registeret på NuGet.org til å finne og laste ned pakker de trenger for appene sine. Et selskap kan ha en strategi for hvilke pakker som er OK å bruke og hvor de skal finnes.

Skjermbilde av NuGet.org som viser en liste over populære pakker.

Pakker kan være plassert på mange forskjellige steder. Noen av disse kildene kan være offentlig tilgjengelige, og noen kan være begrenset og bare tilgjengelig for ansatte i et bestemt firma. Her er noen steder hvor pakker kan ligge:

  • registre: Et eksempel kan være et globalt register, for eksempel NuGet.org registeret. Du kan være vert for dine egne registre som kan være enten private eller offentlige. Tjenester som GitHub og Azure DevOps gjør private registre tilgjengelige.
  • Filer: Du kan installere en pakke fra en lokal mappe. Installasjon fra en pakke er vanlig når du prøver å utvikle dine egne .NET-biblioteker og vil teste pakken lokalt. Eller av en eller annen grunn vil du ikke bruke et register.

diagram som illustrerer forholdet mellom pakkeopprettere, pakkeverter og pakkeforbrukere.

NuGet register- og dotnet-verktøy

Når du kjører dotnet add package <name of dependency>, går .NET til et globalt register kalt NuGet.org registeret som er plassert på https://nuget.org, og ser etter koden som skal lastes ned. Du kan også bla gjennom denne siden for pakker hvis du besøker den ved hjelp av en nettleser. Hver pakke har et dedikert nettsted som du kan gå til.

Skjermbilde av målsiden for en NuGet-pakke.

På disse områdene kan du lære mer om hvor kildekoden befinner seg. Du kan også finne informasjon som måledata om nedlastinger og informasjon om vedlikehold.

Skjermbilde av informasjon og måledata på en NuGet-pakke.

.NET-kommandoer

Så langt har du lært hvordan du kan installere avhengigheter ved hjelp av .NET Core CLI. Men dette verktøyet kan gjøre mye mer.

.NET Core CLI har ganske mange kommandoer. Kommandoene hjelper deg med oppgaver som installasjon av pakker, redigeringspakker og initialisering av .NET-prosjekter. Du trenger ikke å vite alle kommandoene i detalj. Når du starter med .NET, vil du sannsynligvis bare bruke et delsett av kommandoene. Etter hvert som du utvider bruken av .NET, kan du bruke flere kommandoer fra ulike kategorier.

For å hjelpe deg med å huske hva kommandoene gjør, hjelper det å tenke på dem som tilhører kategorier:

  • Behandle avhengigheter: Kommandoer i denne kategorien dekker installasjon, fjerning, opprydding etter pakkeinstallasjoner og pakkeoppdateringer.
  • Kjør programmer: .NET Core-verktøyet kan hjelpe deg med å administrere flyter i programutviklingen. Eksempler på programflyter kjører tester, byggekode og kjører overføringskommandoer for å oppgradere prosjekter.
  • Forfatter- og publiseringspakker: Flere kommandoer kan hjelpe deg med oppgaver som å opprette en komprimert pakke og sende pakken til et register.

Hvis du vil ha en detaljert liste over alle kommandoer, skriver du inn dotnet --help i terminalen.

Slik installerer du en pakke

Bruk kommandoen dotnet add package <dependency name> til å installere en normal avhengighet som er ment å brukes som en del av programmet.

Notat

Du kan installere noen pakker globalt. Disse pakkene er ikke ment å importeres til prosjektet. Derfor er mange globale pakker CLI-verktøy eller -maler. Du kan også installere disse globale verktøyene fra et pakkerepositorium. Installer verktøy ved hjelp av kommandoen dotnet tool install <name of package>. Installer maler ved hjelp av kommandoen dotnet new -i <name of package>.

Etter installasjon

De installerte pakkene er oppført i dependencies delen av .csproj filen. Hvis du vil se hvilke pakker som er i mappen, kan du angi 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 kommandoen viser bare pakker på øverste nivå, og ikke avhengigheter av pakkene som vi kaller transitive pakker. Denne kommandoen er fin for en rask titt. Hvis du vil ha en mer detaljert visning, kan du føre opp alle transitive pakker. Når du gjør dette, ser kommandoen list slik ut:

dotnet list package --include-transitive

Inkludert transitives kan du se avhengigheter sammen med alle pakkene du installerte. Hvis du kjører dotnet list package --include-transitive, kan det hende du får denne utdataene:

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

Gjenopprette avhengigheter

Når du oppretter eller kloner et prosjekt, lastes ikke de inkluderte avhengighetene ned eller installeres før du bygger prosjektet. Du kan gjenopprette avhengigheter manuelt og prosjektspesifikke verktøy som er angitt i prosjektfilen, ved å kjøre kommandoen dotnet restore. I de fleste tilfeller trenger du ikke eksplisitt å bruke kommandoen. NuGet-gjenoppretting kjører implisitt, om nødvendig, når du kjører kommandoer som new, buildog run.

Rydde opp avhengigheter

Før eller senere vil du sannsynligvis innse at du ikke lenger trenger en pakke. Du kan også innse at pakken du installerte, ikke er den du trenger. Kanskje du har funnet en som utfører en oppgave bedre. Uansett årsak bør du fjerne avhengigheter som du ikke bruker. Å gjøre det holder ting rent. Avhengigheter tar også opp plass.

Hvis du vil fjerne en pakke fra prosjektet, bruker du kommandoen remove, slik som: dotnet remove package <name of dependency>. Denne kommandoen fjerner pakken fra prosjektets .csproj fil.