J'ai une solution avec plusieurs projets. La plupart des références tierces sont manquantes, mais il existe un packages.config
fichier pour chaque projet. Comment obtenir NuGet pour installer / mettre à jour tous les packages nécessaires? Est-ce que cela doit être fait via la ligne de commande pour chaque projet?
674
Réponses:
Vous pouvez utiliser nuget.exe pour restaurer vos packages ou avec NuGet 2.7 ou supérieur installé, vous pouvez simplement compiler votre solution dans Visual Studio, qui restaurera également les packages manquants.
Pour NuGet.exe, vous pouvez exécuter la commande suivante pour chaque projet.
Ou avec NuGet 2.7, vous pouvez restaurer tous les packages de la solution à l'aide de la ligne de commande.
Ces deux éléments abaissent les packages. Vos fichiers de projet ne seront cependant pas modifiés lors de l'exécution de cette commande, le projet doit donc déjà avoir une référence aux packages NuGet. Si ce n'est pas le cas, vous pouvez utiliser Visual Studio pour installer les packages.
Avec NuGet 2.7 et versions ultérieures, Visual Studio restaure automatiquement les packages NuGet manquants lorsque vous créez votre solution, il n'est donc 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 à partir de Visual Studio, vous pouvez mettre à jour les packages à partir de la fenêtre Console du gestionnaire de packages, ou enfin vous pouvez utiliser la gestion Boîte de dialogue Packages.
Depuis la ligne de commande, vous pouvez mettre à jour les packages de la solution vers la dernière version disponible sur nuget.org.
Notez que cela n'exécutera aucun script PowerShell dans les packages NuGet.
À partir de Visual Studio, vous pouvez utiliser la console du gestionnaire de packages pour mettre également à jour les packages. Cela présente 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 packages de chaque projet vers la dernière version disponible sur nuget.org.
Vous pouvez également limiter cela à un seul projet.
Si vous souhaitez réinstaller les packages dans les mêmes versions que celles précédemment installées, vous pouvez utiliser l'
-reinstall
argument avec laUpdate-Package
commande.Vous pouvez également limiter cela à un seul projet.
L'
-reinstall
option désinstallera d'abord puis réinstallera le package dans un projet.Ou, vous pouvez mettre à jour les packages à l'aide de la
Manage Packages
boîte de dialogue.Mises à jour:
-reinstall
la source
Update-Package -reinstall -Project ProjectName
Réinstallez tous les packages dans TOUS LES PROJETS de la solution actuelle:
Réinstallez tous les packages dans SPECIFIC PROJECT de la solution actuelle ( Merci à l' unarity et à ashes999 ):
la source
Il existe un autre moyen plus récent et plus rapide de le faire à partir de Visual Studio. Consultez cet article de David Ebbo et référencez la section des commentaires si vous rencontrez des problèmes. Fondamentalement, vous effectuez les opérations suivantes dans l'invite du Gestionnaire de packages:
Ensuite, lorsque vous construisez votre solution, les packages seront automatiquement installés s'ils sont manquants.
Mise à jour:
Cette fonctionnalité est intégrée dans Nuget 1.6 avec l'intégration de Visual Studio, vous n'avez donc même pas besoin d'installer NuGetPowerTools ou de taper des commandes. Tout ce que tu dois faire est
Lisez cet article pour plus de détails.
la source
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 dans le fichier package.config et les réinstaller.
la source
$packages.packages.package | % { Update-Package -reinstall -id $($_.id) }
Update-Package -Reinstall
.C'est le meilleur exemple et le plus simple que j'ai trouvé. Il réinstallera tous les nugets répertoriés dans packages.config et conservera les versions actuelles. Remplacez
YourProjectNameGoesHere
par le nom du projet.la source
Avec la dernière version de NuGet 2.5, il y a maintenant un bouton "Tout mettre à jour" dans le gestionnaire de packages: http://docs.nuget.org/docs/release-notes/nuget-2.5#Update_All_button_to_allow_updating_all_packages_at_once
la source
J'utilise Visual Studio 2015 et les solutions données ci-dessus n'ont pas fonctionné pour moi, j'ai donc 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.
Vous aurez peut-être l'erreur suivante:
Pour résoudre ce problème: modifiez cette ligne dans votre fichier NuGet.targets et définissez-la sur true:
Référence: https://stackoverflow.com/a/30918648 et https://stackoverflow.com/a/20502049
la source
Si vous installez Nuget 2.8, cochez la case
dans Visual Studio. Si elle est cochée, reconstruisez simplement le projet pour restaurer toutes vos bibliothèques de référence.
la source
Allow NuGet to download missing packages
case.Après 3 heures de recherche et d'enquête.
J'ai eu des problèmes avec cela parce que nous avons deux membres dans l'équipe (en utilisant le contrôle de source GitHub), parce que nous n'avons pas restreint les fichiers pour les packages à envoyer au référentiel distant, l'un des membres de l'équipe a envoyé des packages au serveur et j'ai tiré ces modifications vers mon local.
Après cela, j'ai eu le même problème que PO, je ne pouvais pas non plus publier mon projet d'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 réinstalle tous vos packages 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' -Reinstall - exécutez cette commande sur la console du gestionnaire de packages
Cette commande réinstalle tous vos packages en relation avec le projet que vous avez spécifié après "-ProjectName". Et je pense que c'est mieux car j'ai dû attendre une demi-heure pour réinstaller tous les packages en solution.
Merci beaucoup à Rodolpho Brock .
En outre, je vous recommande que lorsque vous extrayez des modifications du serveur distant, appuyez sur le bouton "Restaurer les packages" qui sera affiché par Visual studio.
la source
Je crois que la première chose que vous devez faire est d' activer la fonction de restauration de package . Voir aussi ici . Cela se fait au niveau de la solution (pas du projet).
Mais cela ne vous mènera 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) validé les packages au contrôle de code source lorsque j'ai validé le projet - mais Visual Studio (et le plugin de contrôle de code source) avaient utilement ignoré les fichiers 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, car c'est là que j'avais installé / téléchargé les packages à l'origine.
Cependant, dans la nouvelle branche de version,
.nupkg
fichiers du paquet étaient tous là - donc NuGet ne pensait pas qu'il y avait quelque chose à restaurer;J'ai supprimé tous les dossiers de packages
$(SolutionDir)/packages
(sous la branche de publication), puis j'ai exécuté une reconstruction complète, et cette fois, la génération a réussi.... et puis bien sûr je suis retourné et j'ai supprimé les dossiers de packages du contrôle de code source (dans la branche tronc et release). Je ne sais pas (encore) si le
repositories.config
fichier doit également être supprimé.De nombreux composants installés pour vous par les modèles de projet - au 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 du package immédiatement après la création du projet / de la solution et avant d'effectuer un archivage initial, effacez le
packages
dossier (et assurez-vous de valider le.nuget
dossier pour le contrôle de code source).Avertissement: J'ai vu une autre réponse ici sur SO qui indiquait que la suppression du
packages
dossier faisait partie de la résolution. Cela m'a mis sur la bonne voie, donc je voudrais rendre hommage à l'auteur, mais je ne peux plus localiser cette question / réponse. Je publierai une modification si je tombe dessus.Je noterais également que
Update-Package -reinstall
cela modifiera les fichiers.sln
et.csproj
/.vbproj
. C'est du moins ce que cela a fait dans mon cas. Quelle IMHO rend cette option beaucoup moins attrayante.la source
J'ai essayé
Update-Package -reinstall
mais il échoue sur un package et a arrêté de traiter tous les packages de projets restants dans ma solution.Je me suis retrouvé avec mon script qui énumère tous les fichiers package.config et que je lance
Update-Package -Reinstall -ProjectName prj -Id pkg
pour chaque projet / package.J'espère que cela peut être utile pour quelqu'un:
Edit: C'est une erreur que j'ai eue: Update-Package: Impossible de trouver le package 'EntityFramework.BulkInsert-ef6'. Les packages existants doivent être restaurés avant d'effectuer une installation ou une mise à jour. L'exécution manuelle
Update-Package -Reinstall -ProjectName my_prj -Id EntityFramework.BulkInsert-ef6
a très bien fonctionné.la source
Pour ceux qui arrivent ici en raison de la défaillance du serveur de construction, vous pouvez créer une cible MSBuild exécutant la commande exec pour exécuter la commande de restauration de nuget , comme ci-dessous (dans ce cas, nuget.exe se trouve dans le dossier .nuget, plutôt que sur le chemin d'accès), qui peut ensuite être exécuté dans une étape de construction de TeamCity immédiatement avant la construction de la solution
la source
maintenant, la console Nuget Package Manager dans Visual Studio 2012 vous donne automatiquement un bouton "Restaurer" dès qu'il trouve un package non installé mais qui s'y trouve dans package.config. Fonction géniale!
la source
À VS2012 V11, si j'utilise "-Reinstall" à la fin de la ligne, cela ne fonctionne pas.
J'ai donc simplement utilisé:
la source
Je sais que c'est un ancien poste, mais j'ai pensé que cela pourrait être utile. Si vous avez besoin d'ignorer des packages spécifiques pendant le processus de mise à jour (comme tous les packages qui mettent à jour des références JavaScript), utilisez le script PowerShell suivant (assurez-vous que la source de votre package est définie sur "Tous" dans la console du Gestionnaire de packages):
EDIT 2014-09-25 10:55 AM EST - Correction d'un bug dans le script
la source
Je ne sais pas depuis quand, mais dans VS2019, vous pouvez le faire plus facilement:
la source
Dans Visual Studio 2017 - Lorsque vous compilez à l'aide d'IDE - Il télécharge tous les packages de nuget manquants et les enregistre dans le dossier "packages".
Mais sur la compilation, la compilation de la machine a été effectuée à l'aide de msbuild.exe. Dans ce cas, j'ai téléchargé nuget.exe.
Au cours de chaque processus de génération avant d'exécuter msbuild.exe. Il exécutera -> nuget.exe restaurer NAME_OF_SLN_File (s'il n'y a qu'un seul fichier .SLN, vous pouvez ignorer ce paramètre).
la source
MSbuild -t:restore Xxxx.sln