NuGet aracılığıyla paketin eski bir sürümünü nasıl kurabilirim?


384

Bir paketin ( Newtonsoft.Json) eski bir sürümünü yüklemek istiyorum . Ama NuGet geri döndü.

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

Herhangi bir yardım büyük takdir edilecektir.


Yanıtlar:


579

takip etmeyi dene:

Uninstall-Package Newtonsoft.Json -Force

bunu takiben:

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

twitterizer Newtonsoft.Json kullanır, daha yeni kaldırmadan eski yüklemek zorunda. PM> Uninstall-Package Newtonsoft.Json Uninstall-Package: 'twitterizer 2.4.0.26532' buna bağlı olduğu için 'Newtonsoft.Json 4.0.8' kaldırılamıyor.
Nebide Yıldız

9
Paketin mevcut bağımlılıklarından bahsetmediniz, bu yüzden farkında değildim: kaldırma paketi komutuna -Force anahtarını eklemeyi deneyin (yukarıda düzenlendiği gibi)
Xavier Decoster

Kaybolduğum için özür dilerim. -Force çalıştı ve eskisini yükledim. Çok teşekkür ederim.
Nebide Yıldız

sürüm 5'e düşürmek için EntityFramework 6 beta sürümünü kaldırırken, kaldırma işlemini tamamlamak için VS'yi yeniden başlatmamı söyleyen mesajlar almaya devam ettim, ancak bunu yaptığınızda mesaj kaldırılmadı. Sadece paketler klasörüne girdim ve oradan kalan boş ağaç yapısını sildim ve başarılı oldu
Simon_Weaver

@Simon_Weaver EF 6 paketinin buna neden olan bir şey yaptığından şüpheleniyorum (örneğin PowerShell komut dosyalarında bazı AppDomain kodlarını fark ettim, bu yüzden muhtemelen VS'nin bazı dll'lere tutunuyor)
Xavier Decoster 26:13

266

İtibariyle Nuget 2.8 için bir özellik olup eski sürüme bir paket.

Nuget 2.8 Sürüm Notları

Misal:

Package Manager Console'a girilen aşağıdaki komut, couchbase istemcisini 1.3.1.0 sürümüne indirecektir

Update-Package CouchbaseNetClient -Version 1.3.1.0

Sonuç:

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

Aşağıdaki crimbo göre not edilecek bir şey:

"bu yaklaşım bir yayın öncesi sürümden diğer yayın öncesi sürüme geçmek için çalışmaz - yalnızca bir yayın sürümüne geçmek için çalışır"


13
Şimdi bu, asgari çabayla en iyi çözüm olarak kabul edilen cevap olmalıdır.
Peter

Evet, tüm bağımlılıkları düşürmek de dahil olmak üzere bir cazibe gibi çalışır - mükemmel
peter

7
Ne yazık ki bu yaklaşım, bir yayın öncesi sürümden başka bir yayın öncesi sürümüne geçmek için çalışmaz - yalnızca bir yayın sürümüne geçmek için çalışır.
Crimbo

@James Roland, yanıtta crimbo tarafından yayın öncesi uyarısını vurgulayabilirseniz harika olurdu
eglasius

51

Xavier'in cevabını biraz kullandım. NuGet'in son sürümlerinde paket sürümünün belirli bir aralığa sınırlandırılmasının kolay ve kullanışlı olduğunu eklemek istiyorum.

Örneğin, projenizdeki hiçbir zaman Newtonsoft.Jsongeçmiş sürümün güncellenmesini istemiyorsanız , dosyanızdaki 3.x.xilgili packageöğeyi aşağıdaki packages.configgibi değiştirin:

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

Özelliğe dikkat edin allowedVersions. Bu, paketin sürümünü aşağıdakilerle sınırlar:3.0 ( dahil ) ve 4.0( hariç ) . Daha sonra, bir Update-Packageçözümün tamamını yaptığınızda, söz konusu paketin önceki sürümde güncellenmesi konusunda endişelenmenize gerek yoktur 3.x.x.

Bu işlevin belgeleri burada .


4
NuGet güncellemelerinin çözümünüzü kırmasını önlemek için çok yararlı! (Microsoft.Net.Http v2.1.10, sana bakıyorum ...)
Douglas Barbin

6
JQuery 1.9 & 2.0'a bakıyorum.
Martin Brown

Microsoft.Owin benim için :-)
bikeman868

19

Şimdi, Visual Studio 2015 + 'da çok daha basitleştirildi . Downgrade / UpgradePaket Yöneticisi Konsolu'ndaki komutları yürütmeden Kullanıcı arabiriminin içinde yapabilirsiniz .

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

  2. Aşağıdaki resme bakın.

    • Select your Package and Choose the Versionyüklemek istediğiniz.

Nuget Paket Yöneticisi Penceresi

Çok Çok Basit, Değil mi? :) Bu yardımcı olur umarım...


1
Evet! Bu gitmek için bir yol :)
Impostor Sendromu

0

Almak için başka bir manuel seçenek:

.nuget\nuget.exe install Newtonsoft.Json -Version 4.0.5
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.