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:

È 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:

  • bindingRedirects

    I reindirizzamenti di binding non funzionano con <PackageReference> gli elementi e .NET supporta <PackageReference> solo gli elementi per i pacchetti NuGet.

  • soluzione

    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.

  • trustedSigners

    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 portabile RuntimeIdentifier in base a quella del computer. Ciò avviene in modo implicito con le proprietà che richiedono un RuntimeIdentifier, ad esempio SelfContained, PublishAot, PublishSelfContained, PublishSingleFilee PublishReadyToRun. 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] e diag[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.