Jak zainstalować starszą wersję pakietu za pośrednictwem NuGet?

384

Chcę zainstalować starszą wersję pakietu ( Newtonsoft.Json). Ale NuGet się wycofuje.

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

Każda pomoc będzie mile widziana.

Nebide Yildiz
źródło
3
możliwy duplikat Pobierz starą wersję pakietu z nugetem
Dirk Vollmar

Odpowiedzi:

579

spróbuj wykonać następujące czynności:

Uninstall-Package Newtonsoft.Json -Force

śledzony przez:

Install-Package Newtonsoft.Json -Version <press tab key for autocomplete>
Xavier Decoster
źródło
twitterizer używa Newtonsoft.Json, muszę instalować starsze bez odinstalowywania nowszych. PM> Uninstall-Package Newtonsoft.Json Uninstall-Package: Nie można odinstalować „Newtonsoft.Json 4.0.8”, ponieważ zależy od niego „twitterizer 2.4.0.26532”.
Nebide Yildiz
9
Nie wspomniałeś o istniejących zależnościach od pakietu, więc byłem tego nieświadomy: spróbuj dodać przełącznik -Force do polecenia uninstall-package (jak edytowano powyżej)
Xavier Decoster
Przepraszam za moje zaginięcie. -Force działało, a ja zainstalowałem starszą. Dziękuję bardzo.
Nebide Yildiz
podczas odinstalowywania EntityFramework 6 beta w celu przejścia na wersję 5 ciągle otrzymywałem komunikaty z informacją, że muszę zrestartować VS, aby zakończyć odinstalowywanie, ale nie usunąłem tego komunikatu. Właśnie wszedłem do folderu pakietów i stamtąd
usunąłem
@Simon_Weaver Podejrzewam, że paczka EF 6 robi coś, co to powoduje (zauważyłem trochę kodu AppDomain na przykład w skryptach PowerShell, więc prawdopodobnie VS trzyma się niektórych bibliotek dll)
Xavier Decoster
266

Od wersji Nuget 2.8 dostępna jest funkcja obniżenia wersji pakietu.

Informacje o wersji Nuget 2.8

Przykład:

Poniższe polecenie wprowadzone w konsoli Menedżera pakietów spowoduje obniżenie wersji klienta couchbase do wersji 1.3.1.0

Update-Package CouchbaseNetClient -Version 1.3.1.0

Wynik:

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

Warto zwrócić uwagę na crimbo poniżej:

„to podejście nie działa w przypadku obniżenia wersji z jednej wersji wstępnej na inną wersję wstępną - działa tylko w przypadku obniżenia wersji do wersji”

James Roland
źródło
13
To powinna być teraz akceptowana odpowiedź jako najlepsze rozwiązanie przy minimalnym wysiłku.
Peter
Tak, działa jak urok, w tym obniżenie wszystkich zależności - idealne
Peter
7
Niestety to podejście nie działa w przypadku obniżenia wersji z jednej wersji wstępnej do innej wersji wstępnej - działa tylko w przypadku obniżenia wersji do wersji.
crimbo
@James Roland byłoby świetnie, gdybyś mógł zaznaczyć ostrzeżenie przedpremierowe przez crimbo na odpowiedzi
eglasius
51

Dość często korzystałem z odpowiedzi Xaviera. Chcę dodać, że ograniczenie wersji pakietu do określonego zakresu jest łatwe i użyteczne w najnowszych wersjach NuGet.

Na przykład, jeśli nigdy nie chcesz Newtonsoft.Jsonbyć aktualizowany w poprzedniej wersji 3.x.xw swoim projekcie, zmień odpowiedni packageelement w packages.configpliku, aby wyglądał następująco:

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

Zwróć uwagę na allowedVersionsatrybut. Spowoduje to ograniczenie wersji tego pakietu do wersji między 3.0( włącznie ) a 4.0( wyłącznie ). Następnie, gdy robisz Update-Packagecałe rozwiązanie, nie musisz się martwić, że ten konkretny pakiet zostanie zaktualizowany do poprzedniej wersji 3.x.x.

Dokumentacja tej funkcji znajduje się tutaj .

rozpoznać
źródło
4
Bardzo przydatne, aby zapobiec uszkodzeniu rozwiązania przez aktualizacje NuGet! (Microsoft.Net.Http v2.1.10, patrzę na ciebie ...)
Douglas Barbin
6
Patrzę na JQuery 1.9 i 2.0.
Martin Brown
Microsoft.Owin dla mnie :-)
bikeman868
19

Teraz jest bardzo uproszczone w Visual Studio 2015 + i nowszych wersjach. Możesz to zrobić Downgrade / Upgradew samym interfejsie użytkownika, bez wykonywania poleceń w konsoli Menedżera pakietów.

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

  2. Spójrz na poniższy obrazek.

    • Select your Package and Choose the Version, który chcesz zainstalować.

Okno Menedżera pakietów Nuget w Project

Bardzo, bardzo proste, prawda? :) Mam nadzieję że to pomoże...

RajeshKdev
źródło
1
tak! To jest
właściwa
0

Kolejna bardziej ręczna opcja uzyskania:

.nuget\nuget.exe install Newtonsoft.Json -Version 4.0.5
knocte
źródło