dotnet add package
Questo articolo si applica a: ✔️ .NET Core 3.1 SDK e versioni successive
Nome
dotnet add package
- Aggiunge o aggiorna un riferimento a un pacchetto in un file di progetto.
Riepilogo
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
Descrizione
Il comando dotnet add package
offre un'opzione utile per aggiungere o aggiornare un riferimento a un pacchetto in un file di progetto. Quando si esegue il comando, viene eseguito un controllo di compatibilità per verificare che il pacchetto sia compatibile con i framework del progetto. Se il controllo viene superato e non sono presenti riferimenti al pacchetto nel file di progetto, viene aggiunto un elemento <PackageReference>
al file di progetto. Se il controllo viene superato ed esistono già riferimenti al pacchetto nel file di progetto, l'elemento <PackageReference>
viene aggiornato alla versione compatibile più recente. Dopo l'aggiornamento del file di progetto, viene eseguito il comando dotnet restore.
Ad esempio, l'aggiunta di Microsoft.EntityFrameworkCore
a ToDo.csproj determina un output simile all'esempio seguente:
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).
Il file ToDo.csproj contiene ora un elemento <PackageReference>
per il pacchetto a cui viene fatto riferimento.
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="6.0.4" />
Se il progetto viene caricato in Central Package Management (CPM) l'elemento <PackageVersion>
in Directory.Packages.props file
viene aggiunto/aggiornato e l'elemento <PackageReference>
viene aggiunto al file di progetto.
Attualmente sono supportati gli scenari seguenti. Questi esempi presuppongono che la versione più recente di Microsoft.EntityFrameworkCore
sia 6.0.4. Altri scenari correlati a CPM sono documentati in questa specifica di progettazione.
Scenario 1: <PackageReference>
non esiste nel file di progetto, <PackageVersion>
l'elemento non esiste in Directory.Packages.props file
e l'argomento versione non viene passato dalla riga di comando.
Comando dell'interfaccia della riga di comando eseguito: dotnet add ToDo.csproj package Microsoft.EntityFrameworkCore
L'elemento <PackageVersion>
viene aggiunto all'oggetto Directory.Packages.props file
.
<PackageVersion Include="Microsoft.EntityFrameworkCore" Version="6.0.4" />
L'elemento <PackageReference>
viene aggiunto al file di progetto.
<PackageReference Include="Microsoft.EntityFrameworkCore" />
Scenario 2: <PackageReference>
non esiste nel file di progetto, <PackageVersion>
l'elemento non esiste in Directory.Packages.props file
e l'argomento versione viene passato dalla riga di comando.
Comando dell'interfaccia della riga di comando eseguito: dotnet add ToDo.csproj package Microsoft.EntityFrameworkCore --version 5.0.4
L'elemento <PackageVersion>
viene aggiunto all'oggetto Directory.Packages.props file
.
<PackageVersion Include="Microsoft.EntityFrameworkCore" Version="5.0.4" />
L'elemento <PackageReference>
viene aggiunto al file di progetto.
<PackageReference Include="Microsoft.EntityFrameworkCore" />
Scenario 3: <PackageReference>
non esiste nel file di progetto, <PackageVersion>
l'elemento Directory.Packages.props file
esiste in e l'argomento versione non viene passato dalla riga di comando.
Comando dell'interfaccia della riga di comando eseguito: dotnet add ToDo.csproj package Microsoft.EntityFrameworkCore
L'elemento <PackageVersion>
viene aggiunto all'oggetto Directory.Packages.props file
.
<PackageVersion Include="Microsoft.EntityFrameworkCore" Version="6.0.4" />
L'elemento <PackageReference>
viene aggiunto al file di progetto.
<PackageReference Include="Microsoft.EntityFrameworkCore" />
Scenario 4: <PackageReference>
non esiste nel file di progetto, <PackageVersion>
l'elemento Directory.Packages.props file
esiste in e l'argomento versione viene passato dalla riga di comando.
Comando dell'interfaccia della riga di comando eseguito: dotnet add ToDo.csproj package Microsoft.EntityFrameworkCore --version 5.0.4
L'elemento <PackageVersion>
viene aggiunto all'oggetto Directory.Packages.props file
.
<PackageVersion Include="Microsoft.EntityFrameworkCore" Version="5.0.4" />
L'elemento <PackageReference>
viene aggiunto al file di progetto.
<PackageReference Include="Microsoft.EntityFrameworkCore" />
Ripristino implicito
Non è necessario eseguire dotnet restore
perché viene eseguito in modo implicito da tutti i comandi che richiedono un ripristino, ad esempio dotnet new
, dotnet build
, dotnet run
, dotnet test
, dotnet publish
e dotnet pack
. Per disabilitare il ripristino implicito, usare l'opzione --no-restore
.
Il comando dotnet restore
è ancora utile in alcuni scenari in cui ha senso eseguire un ripristino esplicito, ad esempio le compilazioni di integrazione continua in Azure DevOps Services o in sistemi di compilazione che richiedono il controllo esplicito quando viene eseguito il ripristino.
Per informazioni su come gestire i feed NuGet, vedere la dotnet restore
documentazione.
Argomenti
PROJECT
Specifica il file di progetto. Se non specificato, il comando ne cerca uno nella directory corrente.
PACKAGE_NAME
Riferimento al pacchetto da aggiungere.
Opzioni
-f|--framework <FRAMEWORK>
Aggiunge un riferimento al pacchetto solo quando la destinazione è un framework specifico.
-?|-h|--help
Stampa le istruzioni di utilizzo del comando.
--interactive
Consente al comando di arrestarsi e attendere l'input o l'azione dell'utente, ad esempio il completamento dell'autenticazione.
-n|--no-restore
Aggiunge un riferimento al pacchetto senza eseguire l'anteprima del ripristino e il controllo di compatibilità.
--package-directory <PACKAGE_DIRECTORY>
La directory in cui ripristinare i pacchetti. Il percorso di ripristino del pacchetto predefinito è
%userprofile%\.nuget\packages
in Windows e~/.nuget/packages
in macOS e Linux. Per altre informazioni, vedere Gestione delle cartelle dei pacchetti globale, della cache e temporanea in NuGet.--prerelease
Consente l'installazione di pacchetti non definitivi. Disponibile a partire da .NET Core 5 SDK.
-s|--source <SOURCE>
URI dell'origine del pacchetto NuGet da usare durante l'operazione di ripristino.
-v|--version <VERSION>
Versione del pacchetto. Vedere Controllo delle versioni dei pacchetti NuGet.
Esempi
Aggiungere un pacchetto NuGet
Microsoft.EntityFrameworkCore
in un progetto:dotnet add package Microsoft.EntityFrameworkCore
Aggiungere una versione specifica di un pacchetto in un progetto:
dotnet add ToDo.csproj package Microsoft.Azure.DocumentDB.Core -v 1.0.0
Aggiungere un pacchetto usando un'origine NuGet specifica:
dotnet add package Microsoft.AspNetCore.StaticFiles -s https://dotnet.myget.org/F/dotnet-core/api/v3/index.json