J’ai vérifié un projet sur un ordinateur, extrait sur un autre et constate que les fichiers binarys installés par NuGet sont manquants. Je pourrais aussi les vérifier pour le contrôle des sources, mais il semble y avoir une meilleure solution:
http://docs.nuget.org/docs/workflows/using-nuget-without-committing-packages
J’ai suivi ces instructions, maintenant avoir un dossier .nuget
où l’on devrait être, avoir les entrées suivantes dans mon fichier .csproj:
true
et pourtant, lorsque je reconstruis ma solution, les packages manquants ne sont pas restaurés.
Qu’est-ce que je rate? Comment puis-je diagnostiquer ce problème?
Notez que vous pouvez forcer l’exécution de la restauration du package en exécutant les commandes suivantes dans la console du gestionnaire de packages nuget.
Update-Package -Reinstall
Force la réinstallation de tout dans la solution.
Update-Package -Reinstall -ProjectName myProj
Force la réinstallation de tout dans le projet myProj.
Note : Ceci est l’option nucléaire. Lorsque vous utilisez cette commande, il est possible que vous ne receviez pas les mêmes versions des packages que vous avez installés et que cela pourrait entraîner des problèmes. Cela est moins susceptible de se produire au niveau du projet que du niveau de la solution.
Vous pouvez utiliser l’option de paramètre de ligne de commande -safe pour limiter les mises à niveau vers les nouvelles versions 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.
Update-Package -Reinstall -Safe
Pour ceux qui tombent sur ce post, lisez ceci.
NuGet 2.7+ nous a présenté la restauration automatique de paquets . Cela est considéré comme une bien meilleure approche pour la plupart des applications car il ne modifie pas le processus MSBuild. Moins de maux de tête.
Quelques liens pour vous aider à démarrer:
Avez-vous activé le mode de restauration de package dans le projet contenant les packages / fichiers binarys 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:
Vous devez choisir un moyen parmi les suivants:
Réinstaller un paquet par son nom dans tous les projets de la solution:
Update-Package –reinstall
Réinstaller un paquet par son nom et ignorer ses dépendances dans tous les projets de la solution:
Update-Package –reinstall -ignoreDependencies
Réinstaller un paquet par son nom dans un projet:
Update-Package –reinstall
Réinstallation de tous les packages dans un projet spécifique:
Update-Package -reinstall -ProjectName
Réinstaller tous les paquets dans une solution:
Update-Package -reinstall
J’ai rencontré ce problème dans deux scénarios.
Tout d’abord, lorsque je tente de générer ma solution à partir de la ligne de commande en utilisant msbuild.exe. Deuxièmement, lorsque je tente de générer les projets sln et contenant sur mon serveur de génération à l’aide de TFS et de CI.
J’ai des erreurs en prétendant que des références sont manquantes. Lors de l’inspection de mon répertoire de génération 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. Suivant les instructions énumérées dans la réponse d’Alexandre http://nuget.codeplex.com/workitem/1879, cela n’a pas fonctionné pour moi.
J’ai activé Restore Packages via VS2010 et j’ai vu que les builds ne fonctionnaient qu’à partir de VS2010. Encore une fois, en utilisant msbuild fail.My workaround est probablement totalement invalide, mais pour mon environnement, tout a fonctionné à partir d’une ligne de commande créée localement, ainsi qu’à partir d’un build CI dans TFS.
Je suis entré dans. \ Nuget et changé cette ligne dans le fichier .nuget \ NuGet.targets:
de:
$(NuGetCommand) install "$(PackagesConfig)" -source "$(PackageSources)" -o "$(PackagesDir)"
à: (remarquez, sans les guillemets autour des variables)
$(NuGetCommand) install $(PackagesConfig) -source $(PackageSources) -o $(PackagesDir)
Je comprends que si mes répertoires ont des espaces, cela échouera, mais je n’ai pas d’espace dans mes répertoires.
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 amené à pirater temporairement le fichier cible.
VS 2017
Outils> Gestionnaire de packages NuGet> Paramètres du gestionnaire de packages> Général Cliquez sur “Effacer tous les cache (s) NuGet”
Juste pour d’autres qui pourraient rencontrer ce problème, j’ai pu résoudre le problème en fermant Visual Studio et en rouvrant le projet. Lors du chargement du projet, les packages ont été restaurés lors de la phase d’initialisation.
Si aucune des autres réponses ne fonctionne pour vous, essayez ce qui suit qui était la seule chose qui a fonctionné pour moi:
Trouvez votre fichier .csproj
et modifiez-le dans un éditeur de texte.
Recherchez la
dans votre fichier .csproj
et supprimez le bloc entier.
Réinstallez tous les packages dans la solution:
Update-Package -reinstall
Après cela, vos paquets de pépites devraient ê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.
Si quelque chose ne fonctionnait pas, essayez:
Travaillé pour moi et c’est facile à essayer.
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 de Outils -> NuGet Package Manager -> Console du Gestionnaire de packages . Les commandes de la console sont simples. Et pour obtenir de l’aide contextuelle en tapant une commande, appuyez simplement sur le bouton et cela vous donnera toutes les options qui commencent par les lettres que vous tapez. Par conséquent, 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 paquet, désinstaller un paquet, etc.
J’ai dû utiliser la console pour m’aider lorsque Visual Studio agissait comme un cinglé.
La restauration automatique de package échouera pour l’une des raisons suivantes:
L’article suivant décrit plus en détail comment aller aux points 1 à 3: https://docs.nuget.org/consume/package-restore/migrating-to-automatic-package-restore
Les paquets NuGet se sont rompus après avoir effectué une restauration du système sur mon système, le sauvegardant environ deux jours. (Les packages NuGet avaient été installés entre-temps.) Pour y remédier, je devais aller dans le dossier .nuget \ packages de mon profil utilisateur, trouver les packages et les supprimer. C’est à ce moment-là seulement que Visual Studio pourrait extraire les paquets et les append comme références.
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é, je n’ai donc eu aucun problème.
vs2015 aucun problème de restauration nuget activer. Ma solution:
append le dossier .nuget, append le fichier NuGet.Config et NuGet.targets dans Directory .nuget
chaque fichier de projet ajoute: build
true This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.
Si l’erreur que vous rencontrez est “incapable de se connecter au serveur distant” comme cela était le mien, alors il serait utile que cette vérification s’ajoute aux vérifications fournies dans les commentaires ci-dessus.
J’ai vu qu’il y avait 2 sources de paquets NUGET à partir desquelles les paquets pouvaient être téléchargés (dans Tools-> Nuget Package Manager-> Paramètres du gestionnaire de paquets). L’une des sources de paquets ne fonctionnait pas et Nuget essayait de télécharger uniquement à partir de cette source.
Les choses sont tombées en place une fois que j’ai changé la source du paquet à télécharger depuis: https://www.nuget.org/api/v2/
Dans mon cas, une tentative de restauration Nuget avortée avait corrompu l’un des fichiers packages.config
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 de Nuget fonctionnait à nouveau.
Il existe un raccourci pour faire fonctionner 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-en un pour obtenir nuget.exe
SUPPRIMER les dossiers de paquets, s’il existe
Ouvrez la console du gestionnaire de packages pour exécuter cette commande
Aucune des autres solutions n’a fonctionné dans ma situation:
Les dépendances AspNetCore ont été installées / désinstallées et ont été mises en cache. “AspNetCore.All” refuserait de mettre à jour / réinstaller / supprimer correctement. Et indépendamment de ce que j’ai fait, il utiliserait les dépendances en cache (avec lesquelles il n’était pas compatible), car elles étaient une version supérieure.
PackageReference
bin
, obj
Tools > Nuget Package Manager > Package Manager Settings
et Clear all Nuget caches
. Vérifiez la console car certains éléments risquent de ne pas être supprimés – copiez le chemin du dossier et quittez Visual Studio. Si cela ne fonctionne toujours pas, répétez mais recherchez également votre lecteur dans Windows Explorer pour nuget
et supprimez tout ce qui semble caché.
Pour moi, j’avais une balise vide NuGetPackageImportStamp dans .csproj
Il devrait idéalement contenir un GUID valide.
Retrait du tag ci-dessus et ensuite “Restore Nugets” a fonctionné pour moi.