J'ai archivé un projet sur un ordinateur, vérifié sur un autre et constaté que les binaires installés par NuGet sont manquants. Je pourrais également les enregistrer dans le contrôle de code source, mais il semble qu'il existe une meilleure solution:
http://docs.nuget.org/docs/workflows/using-nuget-without-committing-packages
J'ai suivi ces instructions, j'ai maintenant un .nuget
dossier où il devrait être, j'ai les entrées suivantes dans mon fichier .csproj:
<RestorePackages>true</RestorePackages>
<Import Project="$(SolutionDir)\.nuget\nuget.targets" />
et pourtant lorsque je reconstruis ma solution, les packages manquants ne sont pas restaurés.
Qu'est-ce que je rate? Comment diagnostiquer ce problème?
Réponses:
Notez que vous pouvez forcer l'exécution de la restauration de package en exécutant les commandes suivantes dans la console du gestionnaire de packages nuget
Force la réinstallation de tout dans la solution.
Force la réinstallation de tout dans le projet myProj.
Remarque : c'est l'option nucléaire. Lorsque vous utilisez cette commande, vous risquez de ne pas obtenir les mêmes versions des packages que vous avez installés et cela pourrait entraîner des problèmes. Cela est moins susceptible de se produire au niveau du projet par opposition au niveau de la solution.
Vous pouvez utiliser l'
-safe
option de paramètre de ligne de commande pour contraindre les mises à niveau vers des versions plus récentes avec le même composant de version majeure et mineure. Cette option a été ajoutée plus tard et résout certains des problèmes mentionnés dans les commentaires.la source
Pour les autres qui tombent sur ce post, lisez ceci.
NuGet 2.7+ nous a présenté la restauration automatique des packages . Ceci est considéré comme une bien meilleure approche pour la plupart des applications car elle n'altère pas le processus MSBuild. Moins de maux de tête.
Quelques liens pour vous aider à démarrer:
la source
Vous devez choisir l'une des méthodes suivantes:
Réinstaller un package par son nom dans tous les projets de la solution:
Réinstaller un package par son nom et ignorer ses dépendances dans tous les projets de la solution:
Réinstaller un package par son nom dans un projet:
Réinstaller tous les packages dans un projet spécifique:
Réinstaller tous les packages dans une solution:
la source
Avez-vous activé le mode de restauration de package dans le projet contenant les packages / binaires manquants? Il existe un problème connu qui nécessite que les packages soient correctement installés lors de l'activation du mode de restauration:
http://nuget.codeplex.com/workitem/1879
Le lien d'origine est mort; cela pourrait être un remplacement: https://github.com/NuGet/Home/issues/1968
la source
VS 2017
Outils> Gestionnaire de packages NuGet> Paramètres du gestionnaire de packages> Général Cliquez sur "Effacer tous les cache (s) NuGet"
la source
J'ai rencontré ce problème dans deux scénarios.
Tout d'abord, lorsque j'essaie de créer ma solution à partir de la ligne de commande à l'aide de msbuild.exe. Deuxièmement, lorsque j'essaye de construire le sln et les projets contenant sur mon serveur de build en utilisant TFS et CI.
J'obtiens des erreurs affirmant que les références sont manquantes. Lors de l'inspection à la fois de mon répertoire de construction local et du serveur TFS, je constate que le dossier / packages n'est pas créé et que les packages nuget ne sont pas copiés. Suivre les instructions listées dans la réponse d'Alexandre http://nuget.codeplex.com/workitem/1879 n'a pas non plus fonctionné pour moi.
J'ai activé les packages de restauration via VS2010 et j'ai vu que les versions ne fonctionnent qu'à partir de VS2010. Encore une fois, l'utilisation de msbuild échoue. Ma solution de contournement est probablement totalement invalide, mais pour mon environnement, tout fonctionnait à partir d'une ligne de commande construite localement, ainsi que d'une construction CI dans TFS.
Je suis entré dans. \ Nuget et j'ai changé cette ligne dans le fichier .nuget \ NuGet.targets:
de:
à: (remarquez, sans les guillemets autour des variables)
Je comprends que si mes répertoires contiennent des espaces, cela échouera, mais je n'ai pas d'espaces dans mes répertoires et donc cette solution de contournement a permis à mes builds de se terminer avec succès ... pour le moment.
Je dirai que l'activation de la journalisation du niveau de diagnostic dans votre build aidera à montrer quelles commandes sont exécutées par msbuild. C'est ce qui m'a conduit à pirater temporairement le fichier des cibles.
la source
Si quelque chose ne fonctionne pas, essayez:
A travaillé pour moi et c'est facile à essayer.
la source
Si aucune des autres réponses ne fonctionne pour vous, essayez ce qui suit, qui était la seule chose qui a fonctionné pour moi:
Trouver votre
.csproj
fichier et modifiez-le dans un éditeur de texte.Trouvez la
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
balise dans votre.csproj
fichier et supprimez tout le bloc.Réinstallez tous les packages de la solution:
Après cela, vos packages nuget doivent être restaurés, je pense que cela pourrait être un cas marginal qui ne se produit que lorsque vous déplacez votre projet vers un emplacement différent.
la source
Juste pour les autres qui pourraient rencontrer ce problème, j'ai pu résoudre le problème en fermant Visual Studio et en rouvrant le projet. Lorsque le projet a été chargé, les packages ont été restaurés lors de la phase d'initialisation.
la source
Pour moi, j'avais une balise vide NuGetPackageImportStamp dans .csproj
Il doit idéalement contenir un GUID valide.
La suppression de la balise ci-dessus, puis "Restore Nugets" a fonctionné pour moi.
la source
Parfois, quelque chose d'étrange se produit et l'utilisation de Visual Studio pour restaurer automatiquement ne fonctionne pas. Dans ce cas, vous pouvez utiliser la console NuGet Package Manager. Cela est ouvert dans Visual Studio à partir des outils -> NuGet Package Manager -> Package Manager Console . Les commandes de la console sont simples. Et pour obtenir une aide contextuelle lors de la saisie d'une commande, appuyez simplement sur le bouton et cela vous donnera toutes les options commençant par les lettres que vous tapez. Donc, si un package n'est pas installé, par exemple log4net, tapez la commande suivante:
Package d'installation log4net
Vous pouvez faire beaucoup plus, comme spécifier la version à installer, mettre à jour un package, désinstaller un package, etc.
J'ai dû utiliser la console pour m'aider lorsque Visual Studio agissait comme un cinglé.
la source
La restauration automatique des packages échouera pour l'une des raisons suivantes:
L'article suivant décrit plus en détail comment traiter les points 1 à 3: https://docs.nuget.org/consume/package-restore/migrating-to-automatic-package-restore
la source
Des packages NuGet ont été interrompus après avoir effectué une restauration du système sur mon système, en le sauvegardant environ deux jours. (Les packages NuGet avaient été installés entre-temps.) Pour résoudre ce problème, je devais aller dans le dossier .nuget \ packages de mon profil utilisateur, trouver les packages et les supprimer. Ce n'est qu'alors que Visual Studio récupère les packages et les ajoute correctement en tant que références.
la source
La meilleure solution de contournement que j'ai trouvée en créant un nouveau projet à partir de zéro, puis importez tous les fichiers source avec le code. Mon projet n'était pas si compliqué donc je n'ai eu aucun problème à partir de là.
la source
Aucune des autres solutions n'a fonctionné dans ma situation:
Les dépendances AspNetCore avaient été installées / désinstallées et étaient en cours de mise en cache. 'AspNetCore.All' refuserait de mettre à jour / réinstaller / supprimer correctement. Et peu importe ce que j'ai fait, il utiliserait les dépendances mises en cache (avec lesquelles il n'était pas compatible), car il s'agissait d'une version supérieure.
PackageReference
bin
,obj
dossiersTools > Nuget Package Manager > Package Manager Settings
etClear all Nuget caches
. Vérifiez la console car elle peut ne pas supprimer certains éléments - copiez le chemin du dossier et quittez Visual Studio.Si cela ne fonctionne toujours pas, répétez mais recherchez également votre lecteur dans l'explorateur Windows
nuget
et supprimez tout ce qui cherche à cacher.la source
vs2015 aucun problème de restauration de nuget d'activation. Ma solution:
ajouter le dossier .nuget, ajouter le fichier NuGet.Config et NuGet.targets dans le répertoire .nuget
chaque fichier de projet ajouter: build
la source
Si l'erreur à laquelle vous faites face est "impossible de se connecter au serveur distant" comme c'était le cas pour la mienne, alors il serait avantageux que vous ayez cette vérification en plus des vérifications fournies dans les commentaires ci-dessus.
J'ai vu qu'il y avait 2 sources de packages NUGET à partir desquelles les packages pouvaient être téléchargés (dans Tools-> Nuget Package Manager-> Packager Manager Settings). L'une des sources du package ne fonctionnait pas et Nuget essayait de télécharger uniquement à partir de cette source.
Les choses se sont mises en place une fois que j'ai changé la source du paquet à télécharger à partir de: https://www.nuget.org/api/v2/ EXPLICITEMENT dans les paramètres
la source
Dans mon cas, une tentative de restauration Nuget avortée avait corrompu l'un des
packages.config
fichiers de la solution. Je n'ai pas découvert cela avant de vérifier mon arbre de travail git. Après avoir annulé les modifications dans le fichier, la restauration Nuget fonctionnait à nouveau.la source
Il existe un raccourci pour faire fonctionner la restauration de Nuget, 1. Assurez-vous que la connexion Internet ou les URL Nuget sont correctes dans le menu d'options de VS Tools 2. Regardez le dossier .nuget ou nuget dans la solution, sinon - copiez à partir de n'importe quel pour obtenir nuget.exe
SUPPRIMER les dossiers de packages, s'il existe
Ouvrez la console du gestionnaire de packages, exécutez cette commande
la source
Dans VS2017, cliquez avec le bouton droit sur la solution => Ouvrir la ligne de commande => Ligne de commande du développeur.
Une fois ouvert, tapez (et appuyez sur Entrée après)
Cela restaurera tous les paquets et vous obtiendrez une belle sortie de console de ce qui a été fait ...
la source