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 file
Element 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 restore
Dokumentation.
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