NuGet Package Restore ne fonctionne pas

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:

    • La bonne façon de restaurer les paquets NuGet
    • Migrez loin de la restauration de package NuGet basée sur MSBuild
    • Migration des solutions MSBuild-Integrated pour utiliser la restauration de package automatique

    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:

    http://nuget.codeplex.com/workitem/1879

    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:

    1. Fermer le projet.
    2. Supprimez le dossier des packages dans votre dossier de solution.
    3. Ouvrez à nouveau Project et restaurez les packages Nugget.

    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:

    1. Vous n’avez pas supprimé les fichiers NuGet.exe et NuGet.targets du dossier .nuget de la solution (qui se trouve dans le dossier racine de votre solution)
    2. Vous n’avez pas activé la restauration automatique des packages à l’aide des Outils >> Options >> Gestionnaire de packages Nuget >> Paramètres généraux.
    3. Vous avez oublié de supprimer manuellement des références dans tous vos projets au fichier Nuget.targets
    4. Vous devez redémarrer Visual Studio (assurez-vous que le processus est supprimé de votre gestionnaire de tâches avant de redémarrer).

    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:

    1. append le dossier .nuget, append le fichier NuGet.Config et NuGet.targets dans Directory .nuget

    2. 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

    1. SUPPRIMER les dossiers de paquets, s’il existe

    2. Ouvrez la console du gestionnaire de packages pour exécuter cette commande

      • collez le chemin complet de nuget.exe RESTORE le chemin complet du fichier .sln!
    3. utilisez la commande Install-pacakge, si la construction n’a pas réussi à trouver les références manquantes. Hope It Helps (HIH)

    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.

    1. Tout sauvegarder Notez la liste des dépendances à réinstaller, quittez VisualStudio
    2. Ouvrez tous les fichiers .proj dans un éditeur de texte et supprimez tous les PackageReference
    3. Dans chaque projet, supprimez les dossiers bin , obj
    4. Supprimez tous les dossiers “packages” que vous trouvez dans la solution.
    5. Ouvrez la solution, allez dans 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.
    6. Supprimez tout élément de ce dossier. Rouvrez la solution et commencez à installer les packages nuget à partir de zéro.

    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.