Lägga till paket i .NET-projektet

Slutförd

.NET har ett flertal kärnbibliotek som hanterar allt från filhantering och HTTP till filkomprimering. Det finns även ett gigantiskt ekosystem med bibliotek från tredje part. Du kan använda NuGet, .NET-pakethanteraren, för att enkelt installera dessa bibliotek och använda dem i ditt program.

En term som används ofta i .NET och dess ekosystem är beroende. Ett paketberoende är ett bibliotek från tredje part. Det är en del återanvändbar kod som åstadkommer något och som du kan lägga till i ditt program. Bibliotek från tredje part är något din app är beroende av för att fungera, och därför kallas det för ett beroende.

Du kan se biblioteket från tredje part som ett paket som lagras på en lagringsplats. Ett paket består av ett eller flera bibliotek som du kan lägga till i din app så att du kan använda dess funktioner.

Här fokuserar vi på paketberoenden. Ett .NET-projekt kan dock ha andra typer av beroenden utöver paketberoenden. Inklusive ramverk, analysverktyg, projektreferenser och delade projektberoenden.

Fastställa om du behöver ett paket

Hur vet du om du behöver ett paket i ditt projekt? Det är en komplicerad fråga som omfattar några faktorer:

  • Få bättre kod: Fråga dig själv om du har att göra med en uppgift som säkerhet, till exempel, och försöker implementera autentisering och auktorisering. Det är något som måste fungera för att du ska skydda både dina och kundernas data. Det finns färdiga standardmönster och bibliotek som många utvecklare använder. Dessa bibliotek implementerar funktioner som du förmodligen alltid behöver och problem korrigeras när de uppstår. Du bör använda ett sådant bibliotek i stället för att skapa ett eget. Det är inte troligt att du skriver koden själv, eftersom det finns så många gränsfall som du behöver tänka på.
  • Sparar tid: Du kan förmodligen skapa det mesta själv, till exempel verktygs- eller gränssnittskomponentbibliotek, men det tar tid. Även om dina resultat är jämförbara med vad som är tillgängligt är det inte en bra användning av din tid för att replikera arbetet.
  • Underhåll: Alla bibliotek och appar behöver underhåll förr eller senare. Underhåll innebär att lägga till nya funktioner och korrigera fel. Är det en bra användning av din tid eller teamets tid för att underhålla ett bibliotek, eller är det bättre att låta ett programvaruteam med öppen källkod hantera det?

Utvärdera ett paket

Innan du installerar ett bibliotek kanske du vill inspektera de beroenden som det förlitar sig på. Dessa beroenden kan göra att du vill använda paketet, eller så kan de avskräcka dig. Här är några faktorer du kan tänka på när du väljer ett beroende till ditt projekt:

  • Storlek: Antalet beroenden kan skapa ett stort fotavtryck. Om du har begränsad bandbredd eller andra maskinvarubegränsningar, kan det här vara ett bekymmer.
  • Licensiering: Du måste se till att den licens som beviljats för biblioteket omfattar din avsedda användning, oavsett om användningen är kommersiell, personlig eller akademisk.
  • Aktivt underhåll: Det kan vara ett problem om ditt paket förlitar sig på ett beroende som inte underhålls aktivt. Beroendet kan vara inaktuellt eller inte uppdaterat under en längre tid.

Du kan ta reda på mer om ett paket innan du installerar det genom att gå till https://www.nuget.org/packages/<package name>. Den här URL:en tar dig till en detaljerad sida för paketet. Välj listrutan Beroenden för att se vilka paket den förlitar sig på för att fungera.

Enbart antalet beroenden kanske inte ger dig hela bilden. Om du laddar ned ett paket kan det hända att du får ett paketberoende som innehåller dussintals paket. Varför är den det? Varje paket innehåller en lista med beroenden. För att du säkert ska kunna använda ett paket genomsöks alla beroenden som laddas ned när du kör kommandot dotnet add package <package name>.

Installera ett paket

Det finns flera sätt att installera paket. Det finns en inbyggd kommandorad och ett grafiskt användargränssnitt för en pakethanterare i Visual Studio och Visual Studio för Mac. Du kan lägga till paketreferenser manuellt i projektfilen, eller så kan du installera dem via ett kommandoradsgränssnitt (CLI) som Paket eller .NET Core CLI.

I den här modulen använder vi det inbyggda .NET Core CLI för att installera paket. Du kan lägga till ett paket i ditt .NET-projekt genom att köra ett kommando i terminalen. Ett typiskt installationskommando ser ut så här: dotnet add package <name of package>. När du kör kommandot add package ansluter kommandoradverktyget till ett globalt register, hämtar paketet och lagrar det i en cachelagrad mapp som alla projekt kan använda.

När projektet har installerats och byggts läggs referenserna till i dina felsöknings- eller versionsmappar. Projektkatalogen ser ut ungefär så här:

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

Hitta ett paket

Med hjälp av det globala registret på NuGet.org kan enskilda utvecklare leta reda på och ladda ned de paket som de behöver i sina appar. Ett företag kan ha en strategi för vilka paket som kan användas och var de finns.

Skärmbild av en lista med populära paket på NuGet.org.

Paketen kan finnas på flera olika platser. Vissa av dessa källor kan vara offentligt tillgängliga och vissa kan vara begränsade och endast tillgängliga för anställda i ett visst företag. Här följer några platser där det kan finnas paket:

  • Register: Ett exempel kan vara ett globalt register, som NuGet.org registret. Du kan ha egna register som kan vara både privata och offentliga. Tjänster som GitHub och Azure DevOps gör privata register tillgängliga.
  • Filer: Du kan installera ett paket från en lokal mapp. Installation från ett paket är vanligt när du försöker utveckla dina egna .NET-bibliotek och vill testa paketet lokalt. Eller av någon anledning vill du inte använda ett register.

Diagram som illustrerar relationen mellan pakets skapare, värdar och konsumenter.

NuGet-registret och dotnet-verktyget

När du kör dotnet add package <name of dependency>går .NET till ett globalt register med namnet NuGet.org registret som finns på https://nuget.org och letar efter koden som ska laddas ned. Du kan också bläddra igenom den här sidan för paket om du besöker den med hjälp av en webbläsare. Varje paket har en dedikerad webbplats som du kan gå till.

Skärmbild av landningssidan för ett NuGet-paket.

På dessa webbplatser kan du lära dig mer om var källkoden finns. Du kan också hitta information som mått om nedladdningar och information om underhåll.

Skärmbild av information och mått för ett NuGet-paket.

.NET-kommandon

Hittills har du lärt dig hur du kan installera beroenden med hjälp av .NET Core CLI. Men det här verktyget kan göra mycket mer.

.NET Core CLI har ganska många kommandon. Kommandona hjälper dig med uppgifter som att installera paket, redigera paket och initiera .NET-projekt. Du behöver inte känna till alla kommandon i detalj. När du börjar med .NET använder du förmodligen bara en liten del av kommandona. När du utökar din användning av .NET kan du använda fler kommandon från olika kategorier.

Det blir lättare att komma ihåg vad kommandona gör om du tänker på att de tillhör olika kategorier:

  • Hantera beroenden: Kommandon i den här kategorin omfattar installation, borttagning, rensning efter paketinstallationer och paketuppdateringar.
  • Kör program: .NET Core-verktyget kan hjälpa dig att hantera flöden i din programutveckling. Det kan vara flöden för att köra tester, kompilera kod eller köra migreringskommandon för att uppgradera projekt.
  • Skapa och publicera paket: Flera kommandon kan hjälpa dig med uppgifter som att skapa ett komprimerat paket och skicka paketet till ett register.

Om du vill ha en detaljerad lista över alla kommandon anger du dotnet --help i terminalen.

Installera ett paket

dotnet add package <dependency name> Använd kommandot för att installera ett normalt beroende som är avsett att användas som en del av ditt program.

Kommentar

Du kan installera vissa paket globalt. De här paketen är inte avsedda att importeras till projektet. Många globala paket är därför CLI-verktyg eller mallar. Du kan även installera de här globala verktygen från en paketdatabas. Installera verktyg med hjälp av kommandot dotnet tool install <name of package>. Installera mallar med hjälp av kommandot dotnet new -i <name of package>.

Efter installationen

De installerade paketen dependencies visas i avsnittet i .csproj filen. Om du vill se vilka paket som finns i mappen kan du ange dotnet list package.

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

Det här kommandot visar endast de översta paketen och inte beroenden för de paket som vi kallar transitiva paket. Det här kommandot är bra för en snabb titt. Om du vill ha en mer djupgående vy kan du visa alla transitiva paket. När du gör det list ser kommandot ut så här:

dotnet list package --include-transitive

Med transitives kan du se beroenden tillsammans med alla paket som du har installerat. Om du kör dotnet list package --include-transitivekan du få följande utdata:

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

Återställa beroenden

När du skapar eller klonar ett projekt laddas inte de inkluderade beroendena ned eller installeras förrän du har skapat projektet. Du kan återställa beroenden manuellt och projektspecifika verktyg som anges i projektfilen genom att köra dotnet restore kommandot . I de flesta fall behöver du inte använda kommandon explicit. NuGet-återställning körs implicit, om det behövs, när du kör kommandon som new, buildoch run.

Rensa beroenden

Förr eller senare märker du troligen att du inte längre behöver ett visst paket. Eller så kanske du inser att paketet du har installerat inte är det du behöver. Du kanske har hittat en som utför en uppgift bättre. Oavsett orsak bör du ta bort beroenden som du inte använder. Detta ger ett mer lättanvänt utrymme. Dessutom tar beroenden också plats.

Om du vill ta bort ett paket från projektet använder du remove kommandot så här: dotnet remove package <name of dependency>. Det här kommandot tar bort paketet från projektets .csproj fil.