Freigeben über


dotnet add package

Dieser Artikel gilt für: ✔️ .NET Core 3.1 SDK und höher

Name

dotnet add package: Fügt einen Paketverweis in einer Projektdatei hinzu oder aktualisiert ihn.

Übersicht

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

Beschreibung

Der Befehl dotnet add package bietet eine praktische Option zum Hinzufügen von Paketverweisen in einer Projektdatei. Beim Ausführen des Befehls wird die Kompatibilität überprüft, um sicherzustellen, dass das Paket mit den Frameworks im Projekt kompatibel ist. Wenn die Überprüfung erfolgreich ist und in der Projektdatei nicht auf das Paket verwiesen wird, wird der Projektdatei ein <PackageReference>-Element hinzugefügt. Wenn die Überprüfung erfolgreich ist und in der Projektdatei bereits auf das Paket verwiesen wird, wird das <PackageReference>-Element in die neueste kompatible Version geändert. Nachdem die Projektdatei aktualisiert wurde, wird dotnet restore ausgeführt.

Beispielsweise wird durch Hinzufügen von Microsoft.EntityFrameworkCore zu ToDo.csproj eine Ausgabe ähnlich der folgenden erzeugt:

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

Die ToDo.csproj-Datei enthält nun ein <PackageReference>-Element für das Paket, auf das verwiesen wird.

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

Wenn das Projekt in die zentrale Paketverwaltung (Central Package Management, CPM) eingebunden ist, wird das <PackageVersion> Element im Directory.Packages.props file Element hinzugefügt/aktualisiert, und das <PackageReference> Element wird der Projektdatei hinzugefügt.

Die folgenden Szenarien werden derzeit unterstützt. In diesen Beispielen wird davon ausgegangen, dass die neueste Version von Microsoft.EntityFrameworkCore 6.0.4 lautet. Weitere Szenarien im Zusammenhang mit CPM sind in dieser Designspezifikation dokumentiert.

Szenario 1: <PackageReference> Ist in der Projektdatei nicht vorhanden, <PackageVersion> das Element ist nicht im Directory.Packages.props fileElement vorhanden, und das Versionsargument wird nicht von der Befehlszeile übergeben.

CLI-Befehl, der ausgeführt wird: dotnet add ToDo.csproj package Microsoft.EntityFrameworkCore

Das <PackageVersion> Element wird der Directory.Packages.props file.

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

Das <PackageReference> Element wird der Projektdatei hinzugefügt.

<PackageReference Include="Microsoft.EntityFrameworkCore" />

Szenario 2: <PackageReference> In der Projektdatei ist kein Element vorhandenDirectory.Packages.props file, <PackageVersion> und das Versionsargument wird von der Befehlszeile übergeben.

CLI-Befehl, der ausgeführt wird: dotnet add ToDo.csproj package Microsoft.EntityFrameworkCore --version 5.0.4

Das <PackageVersion> Element wird der Directory.Packages.props file.

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

Das <PackageReference> Element wird der Projektdatei hinzugefügt.

<PackageReference Include="Microsoft.EntityFrameworkCore" />

Szenario 3: <PackageReference> In der Projektdatei ist kein Element vorhandenDirectory.Packages.props file, <PackageVersion> und das Versionsargument wird nicht von der Befehlszeile übergeben.

CLI-Befehl, der ausgeführt wird: dotnet add ToDo.csproj package Microsoft.EntityFrameworkCore

Das <PackageVersion> Element wird der Directory.Packages.props file.

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

Das <PackageReference> Element wird der Projektdatei hinzugefügt.

<PackageReference Include="Microsoft.EntityFrameworkCore" />

Szenario 4: <PackageReference> In der Projektdatei ist kein Element vorhandenDirectory.Packages.props file, <PackageVersion> und das Versionsargument wird von der Befehlszeile übergeben.

CLI-Befehl, der ausgeführt wird: dotnet add ToDo.csproj package Microsoft.EntityFrameworkCore --version 5.0.4

Das <PackageVersion> Element wird der Directory.Packages.props file.

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

Das <PackageReference> Element wird der Projektdatei hinzugefügt.

<PackageReference Include="Microsoft.EntityFrameworkCore" />

Implizite Wiederherstellung

Sie müssen dotnet restore nicht ausführen, da der Befehl implizit von allen Befehlen ausgeführt wird, die eine Wiederherstellung erfordern. Zu diesen zählen z. B. dotnet new, dotnet build, dotnet run, dotnet test, dotnet publish und dotnet pack. Verwenden Sie die Option --no-restore, um die implizite Wiederherstellung zu deaktivieren.

In bestimmten Fällen eignet sich der dotnet restore-Befehl dennoch. Dies ist etwa bei Szenarios der Fall, in denen die explizite Wiederherstellung sinnvoll ist. Beispiele hierfür sind Continuous Integration-Builds in Azure DevOps Services oder Buildsysteme, die den Zeitpunkt für die Wiederherstellung explizit steuern müssen.

Informationen zum Verwalten von NuGet-Feeds finden Sie in der dotnet restoreDokumentation.

Argumente

  • PROJECT

    Gibt die Projektdatei an. Wenn keine angegeben ist, sucht der Befehl im aktuellen Verzeichnis nach einer Projektdatei.

  • PACKAGE_NAME

    Hinzuzufügender Paketverweis.

Optionen

  • -f|--framework <FRAMEWORK>

    Fügt Paketverweise nur hinzu, wenn ein bestimmtes Framework verwendet werden soll.

  • -?|-h|--help

    Gibt eine Beschreibung zur Verwendung des Befehls aus.

  • --interactive

    Ermöglicht dem Befehl, anzuhalten und auf Benutzereingaben oder Aktionen zu warten. Beispielsweise, um die Authentifizierung abzuschließen.

  • -n|--no-restore

    Fügt Paketverweise hinzu, ohne eine Vorschau der Wiederherstellung und eine Kompatibilitätsüberprüfung durchzuführen.

  • --package-directory <PACKAGE_DIRECTORY>

    Das Verzeichnis, in dem die Pakete wiederhergestellt werden sollen. Der standardmäßige Wiederherstellungsort für Pakete ist %userprofile%\.nuget\packages unter Windows und ~/.nuget/packages unter MacOS und Linux. Weitere Informationen finden Sie unter Verwalten von globalen Pakete-, Cache- und temporären Ordnern in NuGet.

  • --prerelease

    Ermöglicht die Installation von Paketen mit Vorabversionen Verfügbar seit dem .NET Core 5 SDK

  • -s|--source <SOURCE>

    Der URI der NuGet-Paketquelle, die während des Wiederherstellungsvorgangs zu verwenden ist.

  • -v|--version <VERSION>

    Die Version des Pakets. Weitere Informationen hierzu finden Sie unter NuGet-Paketversionsverwaltung.

Beispiele

  • Fügen Sie das Microsoft.EntityFrameworkCore-NuGet-Pakets zu einem Projekt hinzu:

    dotnet add package Microsoft.EntityFrameworkCore
    
  • Fügen Sie eine bestimmte Version eines Pakets zu einem Projekt hinzu:

    dotnet add ToDo.csproj package Microsoft.Azure.DocumentDB.Core -v 1.0.0
    
  • Fügen Sie ein Paket mit einer bestimmten NuGet-Quelle hinzu:

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

Siehe auch