Delen via


dotnet add package

Dit artikel is van toepassing op: ✔️ .NET Core 3.1 SDK en latere versies

Naam

dotnet add package - Voegt een pakketverwijzing toe of werkt deze bij in een projectbestand.

Samenvatting

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

dotnet add package -h|--help

Beschrijving

De dotnet add package opdracht biedt een handige optie om een pakketreferentie toe te voegen of bij te werken in een projectbestand. Wanneer u de opdracht uitvoert, is er een compatibiliteitscontrole om ervoor te zorgen dat het pakket compatibel is met de frameworks in het project. Als de controle wordt doorgegeven en er niet naar het pakket wordt verwezen in het projectbestand, wordt er een <PackageReference> element toegevoegd aan het projectbestand. Als de controle is geslaagd en er al naar het pakket wordt verwezen in het projectbestand, wordt het <PackageReference> element bijgewerkt naar de nieuwste compatibele versie. Nadat het projectbestand is bijgewerkt, wordt dotnet-herstel uitgevoerd.

Als u bijvoorbeeld toevoegt Microsoft.EntityFrameworkCore aan ToDo.csproj , wordt uitvoer geproduceerd die vergelijkbaar is met het volgende voorbeeld:

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

Het bestand ToDo.csproj bevat nu een <PackageReference> element voor het pakket waarnaar wordt verwezen.

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

Als het project wordt toegevoegd aan CPM (Central Package Management), wordt het <PackageVersion> element in het Directory.Packages.props file projectbestand toegevoegd/bijgewerkt en wordt het <PackageReference> element toegevoegd aan het projectbestand.

De volgende scenario's worden momenteel ondersteund. In deze voorbeelden wordt ervan uitgegaan dat de nieuwste versie Microsoft.EntityFrameworkCore 6.0.4 is. Aanvullende scenario's met betrekking tot CPM worden beschreven in deze ontwerpspecificatie.

Scenario 1: <PackageReference> bestaat niet in het projectbestand, <PackageVersion> het element bestaat niet in het Directory.Packages.props fileen het versieargument wordt niet doorgegeven vanaf de opdrachtregel.

CLI-opdracht die wordt uitgevoerd: dotnet add ToDo.csproj package Microsoft.EntityFrameworkCore

Het <PackageVersion> element wordt toegevoegd aan de Directory.Packages.props file.

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

Het <PackageReference> element wordt toegevoegd aan het projectbestand.

<PackageReference Include="Microsoft.EntityFrameworkCore" />

Scenario 2: <PackageReference> bestaat niet in het projectbestand, <PackageVersion> het element bestaat niet in het Directory.Packages.props fileen het versieargument wordt doorgegeven vanaf de opdrachtregel.

CLI-opdracht die wordt uitgevoerd: dotnet add ToDo.csproj package Microsoft.EntityFrameworkCore --version 5.0.4

Het <PackageVersion> element wordt toegevoegd aan de Directory.Packages.props file.

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

Het <PackageReference> element wordt toegevoegd aan het projectbestand.

<PackageReference Include="Microsoft.EntityFrameworkCore" />

Scenario 3: <PackageReference> bestaat niet in het projectbestand, <PackageVersion> het element bestaat in het Directory.Packages.props fileen het versieargument wordt niet doorgegeven vanaf de opdrachtregel.

CLI-opdracht die wordt uitgevoerd: dotnet add ToDo.csproj package Microsoft.EntityFrameworkCore

Het <PackageVersion> element wordt toegevoegd aan de Directory.Packages.props file.

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

Het <PackageReference> element wordt toegevoegd aan het projectbestand.

<PackageReference Include="Microsoft.EntityFrameworkCore" />

Scenario 4: <PackageReference> bestaat niet in het projectbestand, <PackageVersion> het element bestaat in het Directory.Packages.props fileen het versieargument wordt doorgegeven vanaf de opdrachtregel.

CLI-opdracht die wordt uitgevoerd: dotnet add ToDo.csproj package Microsoft.EntityFrameworkCore --version 5.0.4

Het <PackageVersion> element wordt toegevoegd aan de Directory.Packages.props file.

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

Het <PackageReference> element wordt toegevoegd aan het projectbestand.

<PackageReference Include="Microsoft.EntityFrameworkCore" />

Impliciete herstelbewerking

U hoeft niet uit te voeren dotnet restore omdat deze impliciet wordt uitgevoerd door alle opdrachten waarvoor een herstelbewerking moet worden uitgevoerd, zoals dotnet new, dotnet build, , dotnet run, dotnet test, , en dotnet publish.dotnet pack Als u impliciete herstel wilt uitschakelen, gebruikt u de --no-restore optie.

De dotnet restore opdracht is nog steeds nuttig in bepaalde scenario's waarbij het expliciet herstellen zinvol is, zoals builds voor continue integratie in Azure DevOps Services of in buildsystemen die expliciet moeten worden beheerd wanneer de herstelbewerking plaatsvindt.

Zie de dotnet restore documentatie voor informatie over het beheren van NuGet-feeds.

Argumenten

  • PROJECT

    Hiermee geeft u het projectbestand. Als dit niet is opgegeven, zoekt de opdracht in de huidige map naar een map.

  • PACKAGE_NAME

    De pakketreferentie die moet worden toegevoegd.

Opties

  • -f|--framework <FRAMEWORK>

    Voegt alleen een pakketreferentie toe als er een specifiek framework wordt gebruikt.

  • -?|-h|--help

    Hiermee wordt een beschrijving afgedrukt van het gebruik van de opdracht.

  • --interactive

    Hiermee kan de opdracht stoppen en wachten op invoer of actie van de gebruiker. Bijvoorbeeld om de verificatie te voltooien.

  • -n|--no-restore

    Voegt een pakketverwijzing toe zonder een herstelvoorbeeld en compatibiliteitscontrole uit te voeren.

  • --package-directory <PACKAGE_DIRECTORY>

    De map waar de pakketten moeten worden hersteld. De standaardlocatie voor pakketherstel bevindt zich %userprofile%\.nuget\packages in Windows en ~/.nuget/packages in macOS en Linux. Zie De globale pakketten, cache en tijdelijke mappen beheren in NuGet voor meer informatie.

  • --prerelease

    Hiermee kunnen prereleasepakketten worden geïnstalleerd. Beschikbaar sinds .NET Core 5 SDK

  • -s|--source <SOURCE>

    De URI van de NuGet-pakketbron die moet worden gebruikt tijdens de herstelbewerking.

  • -v|--version <VERSION>

    Versie van het pakket. Zie NuGet-pakketversiebeheer.

Voorbeelden

  • NuGet-pakket toevoegen Microsoft.EntityFrameworkCore aan een project:

    dotnet add package Microsoft.EntityFrameworkCore
    
  • Voeg een specifieke versie van een pakket toe aan een project:

    dotnet add ToDo.csproj package Microsoft.Azure.DocumentDB.Core -v 1.0.0
    
  • Voeg een pakket toe met behulp van een specifieke NuGet-bron:

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

Zie ook