Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questo articolo si applica a: ✔️ .NET 6 SDK e versioni successive
Nome
dotnet restore: ripristina le dipendenze e gli strumenti di un progetto.
Riepilogo
dotnet restore [<PROJECT>|<SOLUTION>|<FILE>]
[-a|--arch <ARCHITECTURE>] [--configfile <FILE>] [--disable-build-servers]
[--disable-parallel] [-f|--force] [--force-evaluate]
[--ignore-failed-sources] [--interactive] [--lock-file-path <LOCK_FILE_PATH>]
[--locked-mode] [--no-dependencies] [--no-http-cache]
[--os <OS>] [--packages <PACKAGES_DIRECTORY>]
[-r|--runtime <RUNTIME_IDENTIFIER>] [-s|--source <SOURCE>]
[--tl:[auto|on|off]] [--ucr|--use-current-runtime] [--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. A queste dipendenze esterne viene fatto riferimento nel file di progetto (con estensione csproj o vbproj). Quando si esegue il comando dotnet restore, 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 comando dotnet restore, 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 flag --no-restore con uno di questi comandi.
Nota
La verifica del pacchetto firmato durante le operazioni di ripristino richiede un archivio radice del certificato valido sia per la firma del codice che per il timestamp. Per altre informazioni, vedere 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 nuget.config nella directory del progetto. Per altre informazioni, vedere Configurazioni NuGet comuni e differenze nuget.config più avanti in questo articolo.
- Usare comandi
dotnet nuget, ad esempiodotnet nuget add source.
È possibile eseguire l'override dei feed di nuget.config con l'opzione -s.
Per informazioni su come usare i feed autenticati, vedere Utilizzo di pacchetti da feed autenticati.
Cartella dei 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 gli elementi
<PackageReference>e .NET supporta solo gli elementi<PackageReference>per i pacchetti NuGet. -
Questa impostazione è specifica di Visual Studio e non si applica a .NET. .NET non usa un file
packages.confige usa invece gli elementi<PackageReference>per i pacchetti NuGet. -
Il supporto per la verifica della firma dei pacchetti 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
PROJECT | SOLUTION | FILE
File di progetto o soluzione o C# (app basata su file) su cui operare. Se non viene specificato un file, MSBuild cerca un progetto o una soluzione nella directory corrente.
PROJECTè il percorso e il nome file di un file di progetto C#, F# o Visual Basic oppure il percorso di una directory contenente un file di progetto C#, F# o Visual Basic.SOLUTIONè il percorso e il nome file di un file di soluzione (.sln o estensione slnx) o il percorso di una directory contenente un file di soluzione.FILEè un argomento aggiunto in .NET 10. Percorso e nome file di un'app basata su file. Le app basate su file sono contenute all'interno di un singolo file compilato ed eseguito senza un file di progetto (con estensione csproj) corrispondente. Per altre informazioni, vedere Creare app C# basate su file.
Opzioni
-
-a|--arch <ARCHITECTURE>Specifica l'architettura di destinazione. Si tratta di una sintassi abbreviata per l'impostazione dell'identificatore di runtime (RID), in cui il valore fornito viene combinato con il RID predefinito. Ad esempio, in un computer
win-x64, specificando--arch x86si imposta il RID suwin-x86. Se si usa questa opzione, non usare l'opzione-r|--runtime. Disponibile a partire da .NET 6 Preview 7. -
--configfile <FILE>File di configurazione NuGet (nuget.config) da usare. Se si dispone di indicazione, verranno usate solo le impostazioni di questo file. Se non specificato, verrà usata la gerarchia dei file di configurazione dalla directory corrente. Per ulteriori informazioni, vedere Configurazioni NuGet comuni.
-
--disable-build-serversForza il comando a ignorare tutti i server di compilazione persistenti. Questa opzione consente di disabilitare in modo coerente 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 errate per qualche motivo. Disponibile da .NET 7 SDK.
--disable-parallelDisabilita il ripristino di più progetti in parallelo.
--forceForza 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-evaluateForza restore a valutare di nuovo tutte le dipendenze anche se esiste già un file di blocco.
--ignore-failed-sourcesSegnala le origini con esito negativo solo se sono presenti pacchetti che soddisfano il requisito di versione.
-
--interactiveConsente 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-modeNon consentire l'aggiornamento del file di blocco del progetto.
--no-dependenciesDurante il ripristino di un progetto con riferimenti da progetto a progetto, ripristina il progetto radice e non i riferimenti.
--no-http-cacheDisabilitare la memorizzazione nella cache HTTP per i pacchetti.
--osSpecifica il sistema operativo di destinazione. Si tratta di una sintassi abbreviata per l'impostazione dell'identificatore di runtime (RID), in cui il valore fornito viene combinato con il RID predefinito. Ad esempio, in un computer
win-x64, specificando--os linuxsi imposta il RID sulinux-x64.Introdotto in .NET SDK 10.0.100
--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.
-
--ucr|--use-current-runtimeUsare il runtime corrente come runtime di destinazione.
--use-lock-fileConsente di generare e usare il file di blocco del progetto con il ripristino.
-
--tl:[auto|on|off]Specifica se il Logger terminale deve essere usato per l'output di compilazione. Il valore predefinito è
auto, che prima di abilitare la registrazione del terminale verifica l'ambiente. Prima di abilitare il nuovo logger, il controllo dell'ambiente verifica che il terminale sia in grado di usare le funzionalità di output moderne e che non utilizzi un output standard reindirizzato.onignora il controllo dell'ambiente e abilita la registrazione del terminale.offignora il controllo dell'ambiente e usa il logger di console predefinito.Terminale Logger mostra la fase di ripristino seguita dalla fase di compilazione. Durante ogni fase, i progetti che sono in corso di compilazione vengono visualizzati nella parte inferiore del terminale. Ogni progetto che compila restituisce sia la destinazione MSBuild attualmente in fase di compilazione che la quantità di tempo impiegato per tale destinazione. È possibile cercare queste informazioni per altre informazioni sulla compilazione. Al termine della compilazione di un progetto, viene scritta una singola sezione "compilazione completata" che acquisisce:
- Il nome del progetto compilato.
- Il framework di destinazione (se sono presenti più destinazioni).
- Lo stato della compilazione.
- L'output primario di tale compilazione (con collegamento ipertestuale).
- Qualsiasi diagnostica generata per il progetto.
Questa opzione è disponibile a partire da .NET 8.
-
-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 ulteriori informazioni, vedere LoggerVerbosity. -
-?|-h|--helpStampa le istruzioni di utilizzo del comando.
Esempi
Ripristinare le dipendenze e gli strumenti per il progetto nella directory corrente:
dotnet restoreRipristinare le dipendenze e gli strumenti per il progetto
app1che si trova nel percorso specificato:dotnet restore ./projects/app1/app1.csprojRipristinare le dipendenze e gli strumenti per il progetto nella directory corrente usando il percorso di file specificato come origine:
dotnet restore -s c:\packages\mypackagesRipristinare 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\myotherpackagesRipristinare 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, dotnet restore include il controllo della sicurezza NuGet. Questo controllo genera un report delle vulnerabilità di sicurezza con il nome del pacchetto interessato, la gravità della vulnerabilità e un collegamento all'avviso contenente altri dettagli.
Per rifiutare esplicitamente il controllo della sicurezza, impostare la <NuGetAudit> proprietà MSBuild su false nel file di progetto.
Per ottenere i dati sulle vulnerabilità, a partire da .NET 9, è possibile usare auditSources oltre a packageSources. Se non vengono fornite origini di controllo, dotnet restore usa invece le origini dei pacchetti. NuGet controlla qualsiasi origine purché l'origine fornisca la VulnerabilityInfo risorsa.
Per elencare NuGet.org come origine di controllo, definire quanto segue nel file nuget.config :
<configuration>
<auditSources>
<clear />
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" />
</auditSources>
</configuration>
È possibile configurare il livello a cui il controllo avrà esito negativo impostando la proprietà <NuGetAuditLevel> MSBuild. I valori consentiti sono low, moderate, high e critical. Ad esempio, se si vogliono visualizzare solo avvisi moderati, alti e critici, è possibile impostare la proprietà su moderate.
In .NET 8 e .NET 9, solo i riferimenti diretti ai pacchetti vengono controllati per impostazione predefinita. A partire da .NET 10, NuGet controlla sia i riferimenti diretti chetransitivi ai pacchetti per impostazione predefinita. È possibile modificare la modalità impostando la <NuGetAuditMode> proprietà MSBuild su direct o all.
Per altre informazioni, vedere Controllo delle dipendenze dei pacchetti per le vulnerabilità di sicurezza.