Question Comment puis-je obtenir NuGet pour installer / mettre à jour tous les paquets dans le paquetage.config?


J'ai une solution avec plusieurs projets dedans. La plupart des références de tiers sont manquantes, mais il existe packages.config fichier pour chaque projet. Comment puis-je obtenir NuGet pour installer / mettre à jour tous les paquets nécessaires? Est-ce que cela doit être fait en ligne de commande pour chaque projet?


543
2017-07-29 17:23


origine


Réponses:


Vous pouvez utiliser nuget.exe Pour restaurer vos paquets ou avec NuGet 2.7, ou plus, installé, vous pouvez simplement compiler votre solution dans Visual Studio, qui restaurera également les paquets manquants.

Pour NuGet.exe, vous pouvez exécuter la commande suivante pour chaque projet.

nuget install packages.config

Ou avec NuGet 2.7 vous pouvez restaurer tous les paquets dans la solution en utilisant la ligne de commande.

nuget restore YourSolution.sln

Les deux vont abattre les paquets. Vos fichiers de projet ne seront cependant pas modifiés lors de l'exécution de cette commande, de sorte que le projet devrait déjà avoir une référence aux paquets NuGet. Si ce n'est pas le cas, vous pouvez utiliser Visual Studio pour installer les packages.

Avec NuGet 2.7 et plus, Visual Studio restaurera automatiquement les paquets NuGet manquants lors de la construction de votre solution, de sorte qu'il n'est pas nécessaire d'utiliser NuGet.exe.

Pour mettre à jour tous les packages de votre solution, commencez par les restaurer, puis vous pouvez utiliser NuGet.exe pour mettre à jour les packages ou, dans Visual Studio, mettre à jour les packages à partir de la fenêtre Console du gestionnaire de packages ou enfin Boîte de dialogue Packages

A partir de la ligne de commande, vous pouvez mettre à jour les paquets dans la solution à la dernière version disponible sur nuget.org.

nuget update YourSolution.sln

Notez que cela n'exécutera aucun script PowerShell dans les packages NuGet.

À partir de Visual Studio, vous pouvez utiliser le Console du gestionnaire de packages mettre également à jour les paquets. Cela a l'avantage que tous les scripts PowerShell seront exécutés dans le cadre de la mise à jour où l'utilisation de NuGet.exe ne les exécutera pas. La commande suivante mettra à jour tous les paquets dans chaque projet à la dernière version disponible sur nuget.org.

Update-Package

Vous pouvez également limiter cela à un projet.

Update-Package -Project YourProjectName

Si vous souhaitez réinstaller les packages avec les mêmes versions que celles précédemment installées, vous pouvez utiliser -reinstall argument avec Update-Package commander.

Update-Package -reinstall

Vous pouvez également limiter cela à un projet.

Update-Package -reinstall -Project YourProjectName

le -reinstall L'option va d'abord désinstaller puis réinstaller le package dans un projet.

Ou, vous pouvez mettre à jour les paquets en utilisant le Manage Packages dialogue.

Mises à jour:

  • 2013/07/10 - Mise à jour avec des informations sur la restauration de nuget dans NuGet 2.7
  • 2014/07/06 - Mise à jour avec des informations sur la restauration automatique des paquets dans Visual Studio et mise à jour de la réponse avec d'autres modifications apportées à NuGet.
  • 2014/11/21 - Mise à jour avec des informations sur -reinstall

676
2017-07-30 11:11



Réinstallez tous les packages dans TOUS LES PROJETS de la solution actuelle:

Update-Package -Reinstall

Réinstallez tous les packages dans SPECIFIC PROJECT de la solution actuelle (Grâce à unitude et ashes999):

Update-Package -ProjectName 'YourProjectNameGoesHere' -Reinstall

442
2017-09-02 16:27



Il existe une autre façon, plus récente et plus rapide, de le faire depuis Visual Studio. Check-out ce post par David Ebbo, et référence la section des commentaires si vous rencontrez des problèmes. Fondamentalement, vous procédez comme suit dans l'invite du Gestionnaire de package:

PM> Install-Package NuGetPowerTools
PM> Enable-PackageRestore

Ensuite, lorsque vous construisez votre solution, les paquets seront automatiquement installés s'ils sont manquants.

Mettre à jour:

Cette fonctionnalité est intégrée dans Nuget 1.6 avec l'intégration visuelle de studio ainsi vous n'avez même pas besoin d'installer NuGetPowerTools ou de taper des commandes. Tout ce que tu dois faire est

Cliquez avec le bouton droit sur le nœud Solution dans l'Explorateur de solutions et sélectionnez   Activer la restauration du paquet NuGet.

Lis Cet article pour plus de détails.


164
2017-12-06 16:19



Voici une autre solution si vous utilisez des projets de site Web ou si vous ne souhaitez pas activer la restauration du package NuGet.

Vous pouvez utiliser la console du gestionnaire de packages pour énumérer tous les packages du fichier package.config et les réinstaller.

# read the packages.config file into an XML object
[xml]$packages = gc packages.config

# install each package 
$packages.packages.package | % { Install-Package -id $($_.id) -Version $($_.version) }

18
2018-02-01 09:49



Update-Package -ProjectName 'YourProjectNameGoesHere' -Reinstall

C'est le meilleur et le plus simple exemple que j'ai trouvé. Il réinstallera tous les nugets listés dans packages.config et conservera les versions actuelles. Remplacer YourProjectNameGoesHere avec le nom du projet.


14
2017-10-23 16:38



Avec la dernière version de NuGet 2.5, il y a maintenant un bouton "Update All" dans le gestionnaire de paquets: http://docs.nuget.org/docs/release-notes/nuget-2.5#Update_All_button_to_allow_updating_all_packages_at_once


10
2018-06-12 17:06



J'utilise Visual Studio 2015 et les solutions données ci-dessus n'ont pas fonctionné pour moi, donc j'ai fait ce qui suit:

Supprimez le dossier packages de ma solution, ainsi que les dossiers bin et obj de chaque projet de la solution et effectuez une reconstruction.

Peut-être que vous aurez la prochaine erreur:

impossible de localiser nuget.exe

Pour résoudre ceci: Modifiez cette ligne dans votre fichier NuGet.targets et définissez-la sur true:

<DownloadNuGetExe Condition=" '$(DownloadNuGetExe)' == '' ">true</DownloadNuGetExe>

Référence:https://stackoverflow.com/a/30918648 et https://stackoverflow.com/a/20502049


6
2017-12-01 02:00



Je crois que la première chose que vous devez faire est activer la fonctionnalité de restauration de paquet. Voir également ici. Ceci est fait au niveau de la solution (pas du projet).

Mais cela ne vous aidera pas jusqu'au bout - j'ai rencontré un problème similaire après avoir activé la fonction de restauration. (VS2013, NuGet 2.8.)

Il s'est avéré que j'avais (involontairement) commis les paquets au contrôle de la source lorsque j'ai engagé le projet - mais Visual Studio (et le plugin de contrôle de source) ont utilement ignoré les binaires lors de l'enregistrement.

Le problème est survenu lorsque j'ai créé une branche de publication. Ma copie locale de la branche dev / main / trunk avait les binaires, parce que c'est là que j'avais initialement installé / téléchargé les paquets.
Cependant, dans la nouvelle branche de publication,

  • les dossiers de paquet et .nupkg les fichiers étaient tous là - donc NuGet ne pensait pas qu'il y avait quelque chose à restaurer;
  • mais en même temps, aucune DLL n'était présente - c'est-à-dire les références tierces manquaient - donc je ne pouvais pas construire.

J'ai supprimé tous les dossiers de paquets dans $(SolutionDir)/packages (sous la branche de publication) et ensuite exécuté une reconstruction complète, et cette fois la génération a réussi.
... et bien sûr je suis retourné et ai enlevé les dossiers de paquetage du contrôle de source (dans la branche de tronc et de dégagement). Je ne sais pas (encore) si le repositories.config le fichier doit également être supprimé.

La plupart des composants installés pour vous par les modèles de projet, du moins pour les projets Web, sont des packages NuGet. Autrement dit, ce problème n'est pas limité aux packages que vous avez ajoutés.
Activez donc la restauration de package immédiatement après la création du projet / de la solution, et avant d'effectuer une vérification initiale, effacez le packages dossier (et assurez-vous de commettre le .nuget dossier au contrôle de source).

Disclaimer: J'ai vu une autre réponse ici sur SO qui a indiqué que le dégagement de la packages dossier faisait partie de la résolution. Cela m'a mis sur la bonne voie, alors je voudrais donner le crédit à l'auteur, mais je ne peux plus localiser cette question / réponse. Je posterai un edit si je tombe dessus.

Je noterais aussi que Update-Package -reinstall va modifier le .sln et .csproj/.vbproj des dossiers. Au moins, c'est ce qu'il a fait dans mon cas. Ce qui à mon humble avis rend cette option beaucoup moins attrayante.


3
2018-04-23 20:29



Après 3 heures de recherche et d'investigation.

J'ai eu des problèmes parce que nous avons deux membres en équipe (en utilisant le contrôle source de GitHub), parce que nous n'avons pas limité les fichiers pour les paquets à envoyer au référentiel distant, un des membres de l'équipe envoyait des paquets au serveur mon local.

Après cela, j'ai eu le même problème que PO, aussi je ne pouvais pas publier mon projet API sur le serveur.

Au et je viens d'utiliser

Update-Package -Reinstall - exécutez cette commande sur la console du gestionnaire de packages

Cette commande va réinstaller tous les paquets que vous avez utilisés dans votre solution. (Pour chaque projet)

Réinstallez tous les packages dans TOUS LES PROJETS de la solution actuelle:

Update-Package -ProjectName 'NameOfProject' -Réinstaller - exécutez cette commande sur la console du gestionnaire de packages

Cette commande va réinstaller tous vos paquets qui sont en relation avec le projet que vous avez spécifié après "-ProjectName". Et je pense que c'est mieux parce que j'ai attendu une demi-heure pour réinstaller tous les paquets en solution.

Pour cela, merci à Rodolpho Brock.

En outre, je vous recommande que lorsque vous tirez des modifications à partir du serveur distant, appuyez sur le bouton "Restaurer les paquets" qui sera affiché par Visual Studio.


3
2017-08-30 14:16