Télécharger l'ancienne version du package avec NuGet

907

Existe-t-il un moyen de télécharger une version précédente d'un package avec NuGet , pas la dernière?

ryudice
la source

Réponses:

1117

Affichez la console du gestionnaire de packages dans Visual Studio - elle se trouve dans Tools / NuGet Package Manager / Package Manager Console. Exécutez ensuite la commande Install-Package:

Install-Package Common.Logging -Version 1.2.0

Voir la référence de commande pour plus de détails.

Edit: Afin de lister les versions d'un package, vous pouvez utiliser la commande Get-Package avec l'argument distant et un filtre:

Get-Package -ListAvailable -Filter Common.Logging -AllVersions

En appuyant sur tab après l'option de version dans la Install-Packagecommande, vous obtenez une liste des dernières versions disponibles.

PHeiberg
la source
54
Pour le bénéfice de ceux qui utilisent Nuget depuis un certain temps mais n'ont jamais rien fait avec depuis la ligne de commande: Pour exécuter les commandes powershell mentionnées par PHeiberg, vous souhaiterez afficher la console du gestionnaire de packages dans Visual Studio - c'est dans Tools | Library Package Manager | Package Manager Console .
Jonathan Moffatt
20
Cette commande doit également être disponible via l'interface utilisateur. Maintenant, si un éditeur a une version bêta, vous ne pouvez obtenir que la dernière version, qui est parfois instable.
Bart Verkoeijen
2
@bgever - La plupart des éditeurs créent avant - premières pour les paquets bêta qui ne sont pas considérés comme le « dernier » dans l'interface graphique. Tant que l'éditeur utilise correctement le contrôle de version, la dernière version doit toujours être stable. Cela ne signifie pas pour autant qu'il n'aura pas de bugs ...
Jesse Webb
3
Informations sur les dépendances et examen des autres propriétés disponibles: Get-Package -ListAvailable [-Source X] -Filter Common.Logging -AllVersions | sélectionnez la version, les dépendances (ou ' | get-member ' pour voir toutes les propriétés)
Curtis Yallop
2
Get-Package -ListAvailablene répertorie pas toutes les versions disponibles pour moi.
Roman Starkov
52

Accédez à sa page dans l'index du package, par exemple. http://www.nuget.org/packages/Newtonsoft.Json/4.0.5

Suivez ensuite les instructions d'installation données:

Install-Package Newtonsoft.Json -Version 4.0.5

Sinon, pour télécharger le .nupkgfichier, suivez le lien «Télécharger», par exemple. https://www.nuget.org/api/v2/package/Newtonsoft.Json/4.0.5

Obsolète: installe mon extension Chrome Nutake qui insère un lien de téléchargement.

Colonel Panic
la source
35

Une autre option consiste à modifier le numéro de version dans le packages.configfichier. Cela entraînera NuGet à télécharger les DLL de cette version la prochaine fois que vous construirez.

Morten Christiansen
la source
1
Sympa ... je n'y ai pas pensé. Je suppose que NuGet Package Restore doit être activé pour la solution.
Leniel Maccaferri
12
Cela ne suffit pas pour modifier automatiquement la référence de l'assembly. Ce qui fonctionne cependant (si vous avez au moins deux assemblys dans votre solution) est le suivant: 1. assurez-vous qu'un assemblage référence le package, 2. éditez la version correcte dans packages.config, 3. gérez les packages NuGet sur la solution, 3a. ajoutez le package à un autre projet, en le supprimant du projet d'origine, et confirmez-le, 3b. inverser 3a et confirmer. L'étape 3a ajoutera la référence d'assemblage correcte à un autre projet et la supprimera de l'original. L'étape 3b ajoutera la référence d'assemblage correcte au projet d'origine.
Jeroen Wiert Pluimers
25

Dans NuGet 3.x (Visual Studio 2015), vous pouvez simplement sélectionner la version dans l'interface utilisateur

Interface utilisateur du gestionnaire de packages NuGet 3

Yishai Galatzer
la source
Bien quand cela fonctionne, mais j'ai vu des cas où toutes les anciennes versions n'y sont pas répertoriées.
UuDdLrLrSs
5

Dans NuGet 3.0, la Get-Packagecommande est obsolète et remplacée par la Find-Packagecommande.

Find-Package Common.Logging -AllVersions

Voir les documents de référence des commandes NuGet pour plus de détails.

Il s'agit du message affiché si vous essayez d'utiliser Get-Package dans Visual Studio 2015.

This Command/Parameter combination has been deprecated and will be removed
in the next release. Please consider using the new command that replaces it: 
'Find-Package [-Id] -AllVersions'

Ou, comme l'a dit @Yishai, vous pouvez utiliser la liste déroulante des numéros de version dans l'écran NuGet de Visual Studio.

Walt Ritscher
la source
3

Comme la question d'origine ne précise pas quel frontend NuGet doit être utilisé, je voudrais mentionner que NuGet 3.5 ajoute la prise en charge de la mise à jour vers une version spécifique via le client de ligne de commande (qui fonctionne également pour les rétrogradations):

NuGet.exe update Common.Logging -Version 1.2.0
CodeFox
la source
0

En utilisant l'interface utilisateur du Nuget Package Manager comme mentionné ci-dessus, cela permet de désinstaller le package nuget en premier. J'ai toujours des problèmes lorsque je reviens sur une version de paquet nuget si je ne désinstalle pas en premier. Certaines références ne sont pas nettoyées correctement. Je suggère donc le workflow suivant lors de l'installation d'un ancien package nuget via le Nuget Package Manager:

  1. Sélectionnez votre serveur / source nuget
  2. Recherchez et sélectionnez le package nuget dont vous souhaitez installer une ancienne version
  3. Désinstaller la version actuelle
  4. Cliquez sur le menu déroulant d'installation> Sélectionnez une ancienne version> Cliquez sur Installer

entrez la description de l'image ici

Bonne chance :)

Anna Maule
la source