Come installare una versione precedente del pacchetto tramite NuGet?


384

Voglio installare una versione precedente di un pacchetto ( Newtonsoft.Json). Ma NuGet torna indietro.

PM> Install-Package Newtonsoft.Json -Version 4.0.5
Successfully installed 'Newtonsoft.Json 4.0.5'.
Install failed. Rolling back...
Install-Package : Already referencing a newer version of 'Newtonsoft.Json'.

Qualsiasi aiuto sarà molto apprezzato.


Risposte:


579

prova quanto segue:

Uninstall-Package Newtonsoft.Json -Force

seguito da:

Install-Package Newtonsoft.Json -Version <press tab key for autocomplete>

twitterizer utilizza Newtonsoft.Json, devo installare più vecchio senza disinstallare più nuovo. PM> Uninstall-Package Newtonsoft.Json Uninstall-Package: Impossibile disinstallare "Newtonsoft.Json 4.0.8" perché "twitterizer 2.4.0.26532" dipende da questo.
— Nebide Yildiz,

9
Non hai menzionato dipendenze esistenti nel pacchetto, quindi non ero a conoscenza di ciò: prova ad aggiungere l'opzione -Force al comando di disinstallazione-pacchetto (come modificato sopra)
— Xavier Decoster

Scusa per la mia scomparsa. -Force ha funzionato e ho installato quello più vecchio. Grazie mille.
— Nebide Yildiz,

durante la disinstallazione di EntityFramework 6 beta per il downgrade alla versione 5 continuavo a ricevere messaggi che mi dicevano di riavviare VS per completare la disinstallazione, ma così facendo non rimossi il messaggio. Sono appena andato nella cartella dei pacchetti e ho eliminato la struttura ad albero vuota rimasta da lì e poi ha avuto successo
— Simon_Weaver

@Simon_Weaver Ho il sospetto che il pkg EF 6 stia facendo qualcosa che lo causa (ho notato del codice AppDomain per esempio negli script di PowerShell, quindi probabilmente VS sta trattenendo alcuni dei dll)
— Xavier Decoster

266

A partire da Nuget 2.8 esiste una funzione per il downgrade di un pacchetto.

Nuget 2.8 Note di rilascio

Esempio:

Il seguente comando immesso nella console di Package Manager eseguirà il downgrade del client couchbase alla versione 1.3.1.0

Update-Package CouchbaseNetClient -Version 1.3.1.0

Risultato:

Updating 'CouchbaseNetClient' from version '1.3.3' to '1.3.1.0' in project [project name].
Removing 'CouchbaseNetClient 1.3.3' from [project name].
Successfully removed 'CouchbaseNetClient 1.3.3' from [project name].

Qualcosa da notare secondo il crimbo di seguito:

"questo approccio non funziona per il downgrade da una versione pre-release a un'altra versione pre-release - funziona solo per il downgrade a una versione di rilascio"


13
Questa dovrebbe ora essere la risposta accettata come la migliore soluzione con il minimo sforzo.
— Peter,

Sì, funziona come un incantesimo, incluso il declassamento di tutte le dipendenze - perfetto
— peter

7
Sfortunatamente questo approccio non funziona per il downgrade da una versione pre-release a un'altra versione pre-release - funziona solo per il downgrade a una versione di rilascio.
— Crimbo,

@James Roland sarebbe fantastico se puoi evidenziare l'avvertimento pre-release di Crimbo sulla risposta
— eglasius

51

Ho usato la risposta di Xavier un bel po '. Voglio aggiungere che limitare la versione del pacchetto a un intervallo specificato è facile e utile nelle ultime versioni di NuGet.

Ad esempio, se non vuoi mai Newtonsoft.Jsonessere aggiornato alla versione precedente 3.x.xnel tuo progetto, modifica l' packageelemento corrispondente nel tuo packages.configfile in questo modo:

<package id="Newtonsoft.Json" version="3.5.8" allowedVersions="[3.0, 4.0)" targetFramework="net40" />

Notare l' allowedVersionsattributo. Ciò limiterà la versione di quel pacchetto alle versioni tra 3.0( compreso ) ed 4.0( esclusivo ). Quindi, quando si esegue Update-Packageun'intera soluzione, non è necessario preoccuparsi che quel pacchetto specifico venga aggiornato alla versione precedente 3.x.x.

La documentazione per questa funzionalità è qui .


4
Molto utile per impedire agli aggiornamenti NuGet di interrompere la tua soluzione! (Microsoft.Net.Http v2.1.10, ti sto guardando ...)
— Douglas Barbin,

6
Sto guardando JQuery 1.9 e 2.0.
— Martin Brown,

Microsoft.Owin per me :-)
— bikeman868 il

19

Ora è molto semplificato in Visual Studio 2015 + in poi. Puoi farlo Downgrade / Upgradeall'interno dell'interfaccia utente stessa, senza eseguire comandi nella console di Gestione pacchetti.

  1. Right click on your projecte go to Manage Nuget Packages.

  2. Guarda l'immagine qui sotto.

    • Select your Package and Choose the Version, che si desidera installare.

Finestra Nuget Package Manager di Project

Molto molto semplice, no? :) Spero che sia di aiuto...


1
Sì! Questa è la strada da percorrere :)
— Sindrome di Impostor

0

Un'altra opzione più manuale per ottenerlo:

.nuget\nuget.exe install Newtonsoft.Json -Version 4.0.5
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.