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.


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>

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”


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 .


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


1
tak! To jest
właściwa

0

Kolejna bardziej ręczna opcja uzyskania:

.nuget\nuget.exe install Newtonsoft.Json -Version 4.0.5
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.