Risoluzione degli errori relativi al ripristino dei pacchetti

Questo articolo è dedicato agli errori comuni durante il ripristino dei pacchetti e alle procedure per risolverli.

Ripristino pacchetto tenta di installare tutte le dipendenze del pacchetto nello stato corretto che corrisponde ai riferimenti al pacchetto nel file di progetto (con estensione csproj) o nel file packages.config. In Visual Studio i riferimenti vengono visualizzati in Esplora soluzioni sotto il nodo Dipendenze \ NuGet o Riferimenti. Per seguire i passaggi necessari per ripristinare i pacchetti, vedere Ripristinare i pacchetti. Se i riferimenti al pacchetto nel file di progetto (con estensione csproj) o nel file packages.config non sono corretti (non corrispondono allo stato desiderato dopo il ripristino del pacchetto), è necessario installare o aggiornare i pacchetti invece di usare Ripristino pacchetti.

Se le istruzioni riportate qui non funzionano, registrare un problema in GitHub in modo che lo scenario possa essere esaminato in maggiore dettaglio. Non usare il controllo "Questa pagina è utile?" che può essere visualizzato in questa pagina perché non offre la possibilità di contattare l'utente per ulteriori informazioni.

Soluzione rapida per gli utenti di Visual Studio

Se si usa Visual Studio, abilitare prima di tutto il ripristino dei pacchetti come indicato di seguito. In caso contrario, continuare con le sezioni successive.

  1. Selezionare il comando di menu Strumenti > NuGet Gestione pacchetti > Gestione pacchetti Impostazioni.
  2. Impostare entrambe le opzioni in Ripristino pacchetto.
  3. Selezionare OK.
  4. Compilare di nuovo il progetto.

Enable NuGet package restore in Tool/Options

Queste impostazioni possono essere modificate anche nel file NuGet.Config. Vedere la sezione sul consenso. Se il progetto è un progetto precedente che usa il ripristino dei pacchetti integrato in MSBuild, potrebbe essere necessario eseguire la migrazione al ripristino dei pacchetti automatico.

Questo progetto fa riferimento a uno o più pacchetti NuGet che non sono presenti in questo computer

Messaggio di errore completo:

This project references NuGet package(s) that are missing on this computer.
Use NuGet Package Restore to download them. The missing file is {name}.

Questo errore si verifica quando si tenta di compilare un progetto che contiene riferimenti a uno o più pacchetti NuGet, ma tali pacchetti non sono attualmente installati nel computer o nel progetto.

  • Quando si usa il formato di gestione PackageReference , questo errore potrebbe essere lasciato da una migrazione di packages.config a PackageReference e deve essere rimosso manualmente dal file di progetto.
  • Quando si usa packages.config, questo errore indica che il pacchetto non è installato nella cartella packages nella radice della soluzione.

Generalmente questa situazione si verifica quando si ottiene il codice sorgente del progetto dal controllo del codice sorgente o tramite un altro download. I pacchetti vengono in genere omessi dal controllo del codice sorgente o dai download perché possono essere ripristinati da feed di pacchetti come nuget.org (vedere Pacchetti e controllo del codice sorgente). La loro aggiunta comporterebbe altrimenti un notevole aumento di dimensioni del repository oppure la creazione di file ZIP inutilmente grandi.

L'errore può verificarsi anche se il file di progetto contiene percorsi assoluti ai percorsi dei pacchetti e il progetto viene spostato.

Usare uno dei metodi seguenti per ripristinare i pacchetti:

Dopo un ripristino corretto, il pacchetto deve essere presente nella cartella global-packages. Per i progetti che usano PackageReference, un ripristino deve ricreare il file obj/project.assets.json. Per i progetti che usano packages.config, il pacchetto deve essere visualizzato nella cartella packages del progetto. La compilazione del progetto dovrebbe ora avvenire senza problemi. In caso contrario, registrare un problema in GitHub in modo da ottenere il necessario supporto.

File di asset project.assets.json non trovato

Messaggio di errore completo:

Assets file '<path>\project.assets.json' not found. Run a NuGet package restore to generate this file.

Il file project.assets.json gestisce un grafico delle dipendenze del progetto quando si usa il formato di gestione PackageReference, che consente di assicurarsi che tutti i pacchetti necessari siano installati nel computer. Dato che questo file viene generato in modo dinamico tramite il ripristino del pacchetto, in genere non viene aggiunto al controllo del codice sorgente. Di conseguenza, questo errore si verifica quando si compila un progetto con uno strumento, ad esempio msbuild, che non ripristina automaticamente i pacchetti.

In questo caso, eseguire msbuild -t:restore seguito da msbuild oppure usare dotnet build (che consente di ripristinare i pacchetti automaticamente). È anche possibile usare uno dei metodi di ripristino dei pacchetti nella sezione precedente.

Messaggio di errore completo:

One or more NuGet packages need to be restored but couldn't be because consent has
not been granted. To give consent, open the Visual Studio Options dialog, click on
the NuGet Package Manager node and check 'Allow NuGet to download missing packages
during build.' You can also give consent by setting the environment variable
'EnableNuGetPackageRestore' to 'true'. Missing packages: {name}

Questo errore indica che il ripristino dei pacchetti è disabilitato nella configurazione di NuGet.

È possibile modificare le impostazioni applicabili in Visual Studio, come descritto in precedenza in Soluzione rapida per gli utenti di Visual Studio.

È anche possibile modificare queste impostazioni direttamente nel file nuget.config applicabile (in genere %AppData%\NuGet\NuGet.Config in Windows e ~/.nuget/NuGet/NuGet.Config in Mac/Linux). Assicurarsi che le chiavi enabled e automatic in packageRestore siano impostate su True:

<!-- Package restore is enabled -->
<configuration>
    <packageRestore>
        <add key="enabled" value="True" />
        <add key="automatic" value="True" />
    </packageRestore>
</configuration>

Importante

Se si modificano le impostazioni packageRestore direttamente in nuget.config, riavviare Visual Studio per visualizzare i valori correnti nella finestra di dialogo Opzioni.

Altre condizioni potenziali

  • Si potrebbero verificare errori di compilazione a causa di file mancanti, con un messaggio che indica di usare il ripristino NuGet per scaricarli. Tuttavia, l'esecuzione di un ripristino potrebbe indicare che "Tutti i pacchetti sono già installati e non c'è nulla da ripristinare". In questo caso, eliminare la packages cartella (quando si usa ) o il obj/project.assets.json file (quando si usa packages.configPackageReference) ed eseguire di nuovo il ripristino. Se l'errore persiste, usare nuget locals all -clear o dotnet nuget locals all --clear dalla riga di comando per cancellare le cartelle global-packages e della cache come descritto in Gestione dei pacchetti globali e delle cartelle della cache.

  • Quando si ottiene un progetto dal controllo del codice sorgente, le cartelle di progetto potrebbero essere impostate in sola lettura. Modificare le autorizzazioni delle cartelle e riprovare a ripristinare i pacchetti.

  • È possibile che sia in uso una versione precedente di NuGet. Controllare in nuget.org/downloads per ottenere le versioni più recenti consigliate. Per Visual Studio 2015 è consigliata la versione 3.6.0.

Se si verificano altri problemi registrare un problema in GitHub in modo da poter fornire ulteriori dettagli su richiesta.