Résolution des erreurs de restauration des packages

Cet article aborde les erreurs rencontrées couramment pendant la restauration de packages, ainsi que les étapes de résolution.

La restauration du package tente d’installer toutes les dépendances de package dans l’état correct correspondant aux références de votre fichier projet (. csproj ) ou de votre fichier packages. config. (Dans Visual Studio, les références apparaissent dans Explorateur de solutions sous les dépendances \ NuGet ou le nœud Références.) Pour suivre les étapes requises pour restaurer des packages, consultez Restaurer des packages. Si les références de package dans votre fichier projet (.csproj) ou votre fichier packages.config sont incorrectes (elles ne correspondent pas à l’état souhaité après la restauration du package), vous devez installer ou mettre à jour les packages au lieu d’utiliser la restauration des packages.

Si les instructions présentées ici ne fonctionnent pas, soumettez un problème sur GitHub pour que nous puissions examiner plus attentivement votre situation. N’utilisez pas le contrôle « Cette page est-elle utile ? » qui peut apparaître sur cette page, car elle ne nous donne pas la possibilité de vous contacter pour plus d’informations.

Solution rapide pour les utilisateurs de Visual Studio

Si vous utilisez Visual Studio, commencez par activer la restauration des packages comme suit. Sinon, passez aux autres sections de cet article.

  1. Sélectionnez la commande de menu Outils > NuGet Gestionnaire de package > Gestionnaire de package Paramètres.
  2. Définissez les deux options sous Restauration de package.
  3. Sélectionnez OK.
  4. Regénérez votre projet.

Enable NuGet package restore in Tool/Options

Vous pouvez également changer ces paramètres dans votre fichier NuGet.Config (consultez la section sur le consentement). Si votre projet est un projet plus ancien qui utilise la restauration de packages intégrée à MSBuild, vous devrez peut-être migrer vers la restauration automatique des packages.

Ce projet fait référence à un ou plusieurs packages NuGet qui ne figurent pas sur cet ordinateur

Message d’erreur complet :

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

Cette erreur se produit quand vous tentez de générer un projet contenant des références à un ou plusieurs packages NuGet qui ne sont pas installés sur l’ordinateur ou dans le projet.

  • Lorsque vous utilisez le format de gestion PackageReference , cette erreur peut être une substitution d’un packages.config à la migration packageReference et doit être supprimée manuellement du fichier projet.
  • Si packages.config est utilisé, l’erreur signifie que le package n’est pas installé dans le dossier packages à la racine de la solution.

Cette situation se produit souvent quand vous obtenez le code source d’un projet à partir du contrôle de code source ou d’un autre téléchargement. Les packages sont généralement omis du contrôle de code source ou des téléchargements car ils peuvent être restaurés à partir de flux de packages comme nuget.org. Pour plus d’informations, consultez Packages et contrôle de code source). Leur inclusion engendrerait l’encombrement du dépôt ou la création inutile de fichiers .zip volumineux.

L’erreur peut également se produire si votre fichier projet contient des chemins absolus vers des emplacements de package, et que vous déplacez le projet.

Utilisez l’une des méthodes suivantes pour restaurer les packages :

Après une restauration réussie, le package devrait être présent dans le dossier global-packages. Dans le cas des projets utilisant PackageReference, la restauration devrait recréer le fichier obj/project.assets.json ; en ce qui concerne les projets utilisant packages.config, le package devrait apparaître dans le dossier packages du projet. Le projet doit à présent être généré. Si ce n’est pas le cas, soumettez un problème sur GitHub pour que nous puissions vous contacter.

Le fichier de ressources project.assets.json est introuvable

Message d’erreur complet :

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

Le fichier project.assets.json conserve le graphique de dépendance d’un projet si le format de gestion PackageReference, qui permet de s’assurer que tous les packages nécessaires sont installés sur l’ordinateur, est utilisé. Ce fichier étant généré dynamiquement par la restauration de package, il n’est généralement pas ajouté au contrôle de code source. Par conséquent, cette erreur se produit en cas de création d’un projet avec un outil comme msbuild, qui ne restaure pas automatiquement les packages.

Dans ce cas, exécutez msbuild -t:restore suivi de msbuild ou utilisez dotnet build (qui restaure automatiquement les packages). Vous pouvez également utiliser l’une des méthodes de restauration de package de la section précédente.

Message d’erreur complet :

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}

Cette erreur indique que la restauration des packages est désactivée dans votre configuration NuGet.

Vous pouvez changer les paramètres applicables dans Visual Studio comme décrit précédemment dans Solution rapide pour les utilisateurs de Visual Studio.

Vous pouvez également modifier ces paramètres dans le fichier nuget.config applicable (en général, %AppData%\NuGet\NuGet.Config sur Windows et ~/.nuget/NuGet/NuGet.Config sur Mac/Linux). Vérifiez que les clés enabled et automatic sous packageRestore ont la valeur True :

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

Important

Si vous modifiez les paramètres packageRestore directement dans nuget.config, redémarrez Visual Studio pour que la boîte de dialogue des options affiche les valeurs actuelles.

Autres conditions potentielles

  • Vous pouvez rencontrer des erreurs de build en raison de fichiers manquants. Dans ce cas, vous recevez un message vous demandant d’utiliser la restauration NuGet pour les télécharger. Toutefois, l’exécution d’une restauration peut indiquer : « Tous les packages sont déjà installés et il n’y a rien à restaurer ». Dans ce cas, supprimez le packages dossier (lors de l’utilisation packages.config) ou le fichier (lors de l’utilisation obj/project.assets.json de PackageReference) et réexécutez la restauration. Si l’erreur persiste, utilisez nuget locals all -clear ou dotnet nuget locals all --clear en ligne de commande pour effacer les dossiers global-packages et cache, comme l’explique la page Gérer les dossiers de packages globaux et de cache.

  • Quand vous obtenez un projet à partir du contrôle de code source, les dossiers de votre projet peuvent être définis en lecture seule. Changez les autorisations des dossiers et réessayez de restaurer les packages.

  • Vous utilisez peut-être une ancienne version de NuGet. Pour obtenir les dernières versions recommandées, accédez à nuget.org/downloads. Pour Visual Studio 2015, nous vous recommandons d’utiliser la version 3.6.0.

Si vous rencontrez d’autres problèmes, soumettez un problème sur GitHub pour que nous puissions obtenir plus d’informations de votre part.