dotnet restore
Questo articolo si applica a: ✔️ .NET Core 3.1 SDK e versioni successive
Nome
dotnet restore
: ripristina le dipendenze e gli strumenti di un progetto.
Riepilogo
dotnet restore [<ROOT>] [--configfile <FILE>] [--disable-build-servers]
[--disable-parallel]
[-f|--force] [--force-evaluate] [--ignore-failed-sources]
[--interactive] [--lock-file-path <LOCK_FILE_PATH>] [--locked-mode]
[--no-cache] [--no-dependencies] [--packages <PACKAGES_DIRECTORY>]
[-r|--runtime <RUNTIME_IDENTIFIER>] [-s|--source <SOURCE>]
[--use-current-runtime, --ucr [true|false]] [--use-lock-file]
[-v|--verbosity <LEVEL>]
dotnet restore -h|--help
Descrizione
Un progetto .NET fa in genere riferimento a librerie esterne nei pacchetti NuGet che forniscono funzionalità aggiuntive. Queste dipendenze esterne vengono referenziate nel file di progetto (con estensione csproj o vbproj). Quando si esegue il dotnet restore
comando, l'interfaccia della riga di comando di .NET usa NuGet per cercare queste dipendenze e scaricarle, se necessario. Garantisce inoltre che tutte le dipendenze richieste dal progetto siano compatibili tra loro e che non vi siano conflitti tra di essi. Al termine del comando, tutte le dipendenze richieste dal progetto sono disponibili in una cache locale e possono essere usate dall'interfaccia della riga di comando di .NET per compilare ed eseguire l'applicazione.
Nella maggior parte dei casi, non è necessario usare in modo esplicito il dotnet restore
comando, poiché se è necessario un ripristino NuGet, i comandi seguenti lo eseguono in modo implicito:
In alcuni casi, potrebbe risultare scomodo eseguire il ripristino implicito di NuGet con questi comandi. È ad esempio necessario che alcuni sistemi automatizzati, come i sistemi di compilazione, chiamino dotnet restore
in modo esplicito per controllare quando si verifica il ripristino in modo che possano controllare l'utilizzo della rete. Per impedire il ripristino implicito di NuGet, è possibile usare il --no-restore
flag con uno di questi comandi.
Nota
La verifica del pacchetto firmata durante le operazioni di ripristino richiede un archivio radice del certificato valido sia per la firma del codice che per il timestamp. Per altre inforomation, vedi Verifica del pacchetto firmato NuGet.
Specificare i feed
Per ripristinare le dipendenze, NuGet necessita dei feed in cui si trovano i pacchetti. I feed vengono forniti in genere tramite il file di configurazione nuget.config. Quando viene installato .NET SDK, viene fornito un file di configurazione predefinito. Per specificare feed aggiuntivi, eseguire una delle operazioni seguenti:
- Creare il proprio file dinuget.config nella directory del progetto. Per altre informazioni, vedere Configurazioni NuGet comuni e nuget.config differenze più avanti in questo articolo.
- Usare
dotnet nuget
comandi comedotnet nuget add source
.
È possibile eseguire l'override dei feednuget.config con l'opzione -s
.
Per informazioni su come usare i feed autenticati, vedere Utilizzo di pacchetti da feed autenticati.
Cartella pacchetti globali
Per le dipendenze è possibile specificare dove vengono inseriti i pacchetti ripristinati durante l'operazione di ripristino, usando l'argomento --packages
. Se questa destinazione non viene specificata, viene usata la cache predefinita dei pacchetti NuGet che si trova nella directory .nuget/packages
della directory home dell'utente in tutti i sistemi operativi. Ad esempio, /home/user1 in Linux o C:\Utenti\user1 in Windows.
Strumenti specifici del progetto
Per gli strumenti specifici del progetto, dotnet restore
ripristina innanzitutto il pacchetto in cui viene compresso lo strumento e quindi ripristina le dipendenze dello strumento come specificato nel file di progetto.
Differenze di nuget.config
Il funzionamento del comando dotnet restore
può essere modificato dalle impostazioni del file nuget.config, se è presente. Se ad esempio si imposta globalPackagesFolder
in nuget.config, i pacchetti NuGet ripristinati vengono posizionati nella cartella specificata. Questo approccio rappresenta un'alternativa all'impostazione dell'opzione --packages
per il comando dotnet restore
. Per altre informazioni, vedere Informazioni di riferimento su nuget.config.
Esistono tre impostazioni specifiche che dotnet restore
ignora:
-
I reindirizzamenti di binding non funzionano con
<PackageReference>
gli elementi e .NET supporta<PackageReference>
solo gli elementi per i pacchetti NuGet. -
Questa impostazione è specifica di Visual Studio e non si applica a .NET. .NET non usa un
packages.config
file e usa<PackageReference>
invece gli elementi per i pacchetti NuGet. -
Il supporto per la verifica della firma del pacchetto multipiattaforma è stato aggiunto in .NET 5.0.100 SDK.
Download del manifesto del carico di lavoro
Quando si esegue questo comando, avvia un download in background asincrono dei manifesti pubblicitari per i carichi di lavoro. Se il download è ancora in esecuzione al termine di questo comando, il download viene arrestato. Per altre informazioni, vedere Manifesti pubblicitari.
Argomenti
ROOT
Percorso facoltativo del file di progetto da ripristinare.
Opzioni
--configfile <FILE>
File di configurazione NuGet (nuget.config) da usare. Se specificato, verranno usate solo le impostazioni di questo file. Se non specificato, verrà utilizzata la gerarchia dei file di configurazione dalla directory corrente. Per altre informazioni, vedere Configurazioni NuGet comuni.
--disable-build-servers
Forza il comando a ignorare tutti i server di compilazione permanenti. Questa opzione offre un modo coerente per disabilitare l'uso della memorizzazione nella cache di compilazione, che forza una compilazione da zero. Una compilazione che non si basa sulle cache è utile quando le cache potrebbero essere danneggiate o non corrette per qualche motivo. Disponibile a partire da .NET 7 SDK.
--disable-parallel
Disabilita il ripristino di più progetti in parallelo.
--force
Forza la risoluzione di tutte le dipendenze, anche se l'ultimo ripristino ha avuto esito positivo. La specifica di questo flag equivale all'eliminazione del file project.assets.json.
--force-evaluate
Forza il ripristino per rivalutare tutte le dipendenze anche se esiste già un file di blocco.
-?|-h|--help
Stampa una descrizione di come usare il comando .
--ignore-failed-sources
Segnala le origini con esito negativo solo se sono presenti pacchetti che soddisfano il requisito di versione.
--interactive
Consente al comando di arrestarsi e attendere l'input o l'azione dell'utente, ad esempio il completamento dell'autenticazione.
--lock-file-path <LOCK_FILE_PATH>
Percorso di output in cui viene scritto il file di blocco del progetto. Per impostazione predefinita, si tratta di PROJECT_ROOT\packages.lock.json.
--locked-mode
Non consentire l'aggiornamento del file di blocco del progetto.
--no-cache
Specifica di non memorizzare nella cache le richieste HTTP.
--no-dependencies
Durante il ripristino di un progetto con riferimenti da progetto a progetto, ripristina il progetto radice e non i riferimenti.
--packages <PACKAGES_DIRECTORY>
Specifica la directory per i pacchetti ripristinati.
-r|--runtime <RUNTIME_IDENTIFIER>
Specifica un runtime per il ripristino dei pacchetti. Questo runtime viene usato per ripristinare i pacchetti di runtime non esplicitamente elencati nel tag
<RuntimeIdentifiers>
del file csproj. Per un elenco degli identificatori di runtime (RID, Runtime Identifier), vedere il catalogo RID.-s|--source <SOURCE>
Specifica l'URI dell'origine del pacchetto NuGet da usare durante l'operazione di ripristino. Questa impostazione esegue l'override di tutte le origini specificate nei file NuGet.config. È possibile specificare più origini, selezionando questa opzione più volte.
--use-current-runtime, --ucr [true|false]
Imposta su
RuntimeIdentifier
una piattaforma portabileRuntimeIdentifier
in base a quella del computer. Ciò avviene in modo implicito con le proprietà che richiedono unRuntimeIdentifier
, ad esempioSelfContained
,PublishAot
,PublishSelfContained
,PublishSingleFile
ePublishReadyToRun
. Se la proprietà è impostata su false, la risoluzione implicita non verrà più eseguita.--use-lock-file
Consente di generare e usare il file di blocco del progetto con il ripristino.
-v|--verbosity <LEVEL>
Imposta il livello di dettaglio del comando. I valori consentiti sono
q[uiet]
,m[inimal]
,n[ormal]
,d[etailed]
ediag[nostic]
. Il valore predefinito èminimal
. Per altre informazioni, vedere LoggerVerbosity.
Esempio
Ripristinare le dipendenze e gli strumenti per il progetto nella directory corrente:
dotnet restore
Ripristinare le dipendenze e gli strumenti per il progetto
app1
che si trova nel percorso specificato:dotnet restore ./projects/app1/app1.csproj
Ripristinare le dipendenze e gli strumenti per il progetto nella directory corrente usando il percorso di file specificato come origine:
dotnet restore -s c:\packages\mypackages
Ripristinare le dipendenze e gli strumenti per il progetto nella directory corrente usando i due percorsi di file specificati come origini:
dotnet restore -s c:\packages\mypackages -s c:\packages\myotherpackages
Ripristinare dipendenze e strumenti per il progetto nella directory corrente che mostra l'output dettagliato:
dotnet restore --verbosity detailed
Controllare le vulnerabilità di sicurezza
A partire da .NET 8, è possibile acconsentire esplicitamente al controllo della sicurezza Di NuGet per dotnet restore
. Questo controllo genera un report delle vulnerabilità di sicurezza con il nome del pacchetto interessato, la gravità della vulnerabilità e un collegamento alla consulenza per altri dettagli.
Per acconsentire esplicitamente al controllo della sicurezza, impostare la <NuGetAudit>
proprietà MSBuild su true
nel file di progetto. Inoltre, per recuperare il set di dati di vulnerabilità noto, assicurarsi di avere il Registro di sistema centrale NuGet.org definito come una delle origini del pacchetto:
<packageSources>
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
</packageSources>
È possibile configurare il livello a cui il controllo avrà esito negativo impostando la <NuGetAuditLevel>
proprietà MSBuild. I valori consentiti sono low
, moderate
, high
e critical
. Ad esempio, se si desidera visualizzare solo gli advisor moderati, elevati e critici, è possibile impostare la proprietà su moderate
.
Commenti e suggerimenti
Invia e visualizza il feedback per