Dela via


dotnet-pakettillägg

Den här artikeln gäller för: ✔️ .NET Core 3.1 SDK och senare versioner

Namn

dotnet package add – Lägger till eller uppdaterar en paketreferens i en projektfil.

Anmärkning

Om du använder .NET 9 SDK eller tidigare använder du formuläret "verb first" (dotnet add package) i stället. Formuläret "substantiv först" introducerades i .NET 10. Mer information finns i Mer konsekvent kommandoordning.

Sammanfattning

dotnet package add <PACKAGE_NAME>
    [-f|--framework <FRAMEWORK>] [--interactive] [--project <PROJECT>]
    [-n|--no-restore] [--package-directory <PACKAGE_DIRECTORY>]
    [--prerelease] [-s|--source <SOURCE>] [-v|--version <VERSION>]

dotnet package add -h|--help

Beskrivning

Kommandot dotnet package add ger ett bekvämt alternativ för att lägga till eller uppdatera en paketreferens i en projektfil. När du kör kommandot finns det en kompatibilitetskontroll för att säkerställa att paketet är kompatibelt med ramverken i projektet. Om kontrollen godkänns och paketet inte refereras till i projektfilen läggs ett <PackageReference> element till i projektfilen. Om kontrollen godkänns och paketet redan refereras till i projektfilen uppdateras elementet <PackageReference> till den senaste kompatibla versionen. När projektfilen har uppdaterats körs dotnet-återställningen .

Om du till exempel lägger Microsoft.EntityFrameworkCore till i ToDo.csproj genereras utdata som liknar följande exempel:

  Determining projects to restore...
  Writing C:\Users\username\AppData\Local\Temp\tmp24A8.tmp
info : Adding PackageReference for package 'Microsoft.EntityFrameworkCore' into project 'C:\ToDo\ToDo.csproj'.
info :   CACHE https://api.nuget.org/v3/registration5-gz-semver2/microsoft.entityframeworkcore/index.json
info :   GET https://pkgs.dev.azure.com/dnceng/9ee6d478-d288-47f7-aacc-f6e6d082ae6d/_packaging/516521bf-6417-457e-9a9c-0a4bdfde03e7/nuget/v3/registrations2-semver2/microsoft.entityframeworkcore/index.json
info :   CACHE https://api.nuget.org/v3/registration5-gz-semver2/microsoft.entityframeworkcore/page/0.0.1-alpha/3.1.3.json
info :   CACHE https://api.nuget.org/v3/registration5-gz-semver2/microsoft.entityframeworkcore/page/3.1.4/7.0.0-preview.2.22153.1.json
info :   CACHE https://api.nuget.org/v3/registration5-gz-semver2/microsoft.entityframeworkcore/page/7.0.0-preview.3.22175.1/7.0.0-preview.3.22175.1.json
info :   NotFound https://pkgs.dev.azure.com/dnceng/9ee6d478-d288-47f7-aacc-f6e6d082ae6d/_packaging/516521bf-6417-457e-9a9c-0a4bdfde03e7/nuget/v3/registrations2-semver2/microsoft.entityframeworkcore/index.json 257ms
info : Restoring packages for C:\ToDo\ToDo.csproj...
info : Package 'Microsoft.EntityFrameworkCore' is compatible with all the specified frameworks in project 'C:\ToDo\ToDo.csproj'.
info : PackageReference for package 'Microsoft.EntityFrameworkCore' version '6.0.4' added to file 'C:\ToDo\ToDo.csproj'.
info : Writing assets file to disk. Path: C:\ToDo\obj\project.assets.json
log  : Restored C:\ToDo\ToDo.csproj (in 171 ms).

Filen ToDo.csproj innehåller nu ett <PackageReference> element för det refererade paketet.

<PackageReference Include="Microsoft.EntityFrameworkCore" Version="6.0.4" />

Om projektet registreras i CPM (Central Package Management) läggs elementet <PackageVersion> i Directory.Packages.props file till/uppdateras och elementet <PackageReference> läggs till i projektfilen.

Följande scenarier stöds för närvarande. Dessa exempel förutsätter att den senaste versionen av Microsoft.EntityFrameworkCore är 6.0.4. Ytterligare scenarier som rör CPM dokumenteras i den här designspecifikationen.

Scenario 1: <PackageReference> finns inte i projektfilen, <PackageVersion> elementet finns inte i Directory.Packages.props file, och versionsargumentet skickas inte från kommandoraden.

CLI-kommando som körs: dotnet package add Microsoft.EntityFrameworkCore --project ToDo.csproj

Elementet <PackageVersion> läggs till i Directory.Packages.props file.

<PackageVersion Include="Microsoft.EntityFrameworkCore" Version="6.0.4" />

Elementet <PackageReference> läggs till i projektfilen.

<PackageReference Include="Microsoft.EntityFrameworkCore" />

Scenario 2: <PackageReference> finns inte i projektfilen, <PackageVersion> elementet finns inte i Directory.Packages.props fileoch versionsargumentet skickas från kommandoraden.

CLI-kommando som körs: dotnet package add Microsoft.EntityFrameworkCore --version 5.0.4 --project ToDo.csproj

Elementet <PackageVersion> läggs till i Directory.Packages.props file.

<PackageVersion Include="Microsoft.EntityFrameworkCore" Version="5.0.4" />

Elementet <PackageReference> läggs till i projektfilen.

<PackageReference Include="Microsoft.EntityFrameworkCore" />

Scenario 3: <PackageReference> finns inte i projektfilen, <PackageVersion> elementet finns i Directory.Packages.props file, och versionsargumentet skickas inte från kommandoraden.

CLI-kommando som körs: dotnet package add Microsoft.EntityFrameworkCore --project ToDo.csproj

Elementet <PackageVersion> läggs till i Directory.Packages.props file.

<PackageVersion Include="Microsoft.EntityFrameworkCore" Version="6.0.4" />

Elementet <PackageReference> läggs till i projektfilen.

<PackageReference Include="Microsoft.EntityFrameworkCore" />

Scenario 4: <PackageReference> finns inte i projektfilen, <PackageVersion> elementet finns i Directory.Packages.props file, och versionsargumentet skickas från kommandoraden.

CLI-kommando som körs: dotnet package add Microsoft.EntityFrameworkCore --version 5.0.4 --project ToDo.csproj

Elementet <PackageVersion> läggs till i Directory.Packages.props file.

<PackageVersion Include="Microsoft.EntityFrameworkCore" Version="5.0.4" />

Elementet <PackageReference> läggs till i projektfilen.

<PackageReference Include="Microsoft.EntityFrameworkCore" />

Implicit återställning

Du behöver inte köra dotnet restore eftersom den körs implicit av alla kommandon som kräver en återställning, till exempel dotnet new, dotnet build, dotnet run, dotnet test, dotnet publishoch dotnet pack. Om du vill inaktivera implicit återställning använder du alternativet --no-restore.

Kommandot dotnet restore är fortfarande användbart i vissa scenarier där det är meningsfullt att uttryckligen återställa, till exempel kontinuerliga integreringsversioner i Azure DevOps Services eller i byggsystem som uttryckligen behöver styra när återställningen sker.

Information om hur du hanterar NuGet-feeds finns i dotnet restore dokumentationen.

Argumentpunkter

  • PROJECT

    Anger projektfilen. Om det inte anges söker kommandot i den aktuella katalogen efter en.

  • PACKAGE_NAME

    Paketreferensen som ska läggas till.

Alternativ

  • -f|--framework <FRAMEWORK>

    Lägger bara till en paketreferens när du riktar in dig på ett specifikt ramverk.

  • -?|-h|--help

    Skriver ut en beskrivning av hur du använder kommandot.

  • --interactive

    Tillåter att kommandot stoppar och väntar på användarens indata eller åtgärd. Till exempel för att slutföra autentiseringen.

  • -n|--no-restore

    Lägger till en paketreferens utan att utföra en återställningsförhandsgranskning och kompatibilitetskontroll.

  • --package-directory <PACKAGE_DIRECTORY>

    Katalogen där paketen ska återställas. Standardplatsen för paketåterställning finns %userprofile%\.nuget\packages i Windows och ~/.nuget/packages i macOS och Linux. Mer information finns i Hantera globala paket, cacheminnen och temporära mappar i NuGet.

  • --prerelease

    Tillåter att förhandsversionspaket installeras. Tillgänglig sedan .NET Core 5 SDK

  • -s|--source <SOURCE>

    URI:n för NuGet-paketkällan som ska användas under återställningsåtgärden.

  • -v|--version <VERSION>

    Version av paketet. Se Versionshantering av NuGet-paket.

Exempel

  • Lägg till Microsoft.EntityFrameworkCore NuGet-paket i ett projekt:

    dotnet package add Microsoft.EntityFrameworkCore
    
  • Lägg till en specifik version av ett paket i ett projekt:

    dotnet package add Microsoft.Azure.DocumentDB.Core -v 1.0.0 --project ToDo.csproj
    
  • Lägg till ett paket med en specifik NuGet-källa:

    dotnet package add Microsoft.AspNetCore.StaticFiles -s https://dotnet.myget.org/F/dotnet-core/api/v3/index.json
    

Se även