Як встановити старішу версію пакета через NuGet?


384

Я хочу встановити старішу версію пакета ( Newtonsoft.Json). Але NuGet відкочується назад.

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

Будь-яка допомога буде дуже вдячна.


Відповіді:


579

спробуйте наступне:

Uninstall-Package Newtonsoft.Json -Force

далі:

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

twitterizer використовує Newtonsoft.Json, мені доведеться встановлювати старіші без видалення новіших. PM> Uninstall-Package Newtonsoft.Json Uninstall-Package: Неможливо видалити 'Newtonsoft.Json 4.0.8', оскільки від нього залежить 'twitterizer 2.4.0.26532'.
Небіде Йілдіз

9
Ви не згадали про існуючі залежності до пакету, тому я не знав про це: спробуйте додати перемикач -Force до команди uninstall-package (як відредаговано вище)
Xavier Decoster,

Вибачте за мою відсутніх. -Форс працював, і я встановив старший. Дуже дякую.
Небіде Йілдіз

при видаленні EntityFramework 6 бета-версії для переходу на версію 5 я продовжував отримувати повідомлення про перезапуск VS для завершення видалення, але це не видаляв повідомлення. Я щойно зайшов у папку пакунків і видалив звідти решту порожньої структури дерева, і тоді вона була успішною
Simon_Weaver

@Simon_Weaver Я підозрюю, що EF 6 кг робить щось, що спричиняє це (помітив якийсь код AppDomain, наприклад, у сценаріях PowerShell, тому, ймовірно, VS тримається за деякі з DLL)
Xavier Decoster

266

На Nuget 2.8 є можливість зменшити рівень пакету.

Примітки до випуску Nuget 2.8

Приклад:

Наступна команда, введена в консоль диспетчера пакунків, знизить клієнтську версію версії 1.3.1.0

Update-Package CouchbaseNetClient -Version 1.3.1.0

Результат:

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

Щось зауважимо, як показано нижче:

"цей підхід не працює для переходу з однієї версії на попередню версію до іншої версії перед випуском - він працює лише для переходу на версію до версії"


13
Тепер це має бути прийнятою відповіддю як найкраще рішення з мінімальними зусиллями.
Петро

Так, працює як шарм, включаючи приниження всіх залежностей - ідеально
пітер

7
На жаль, цей підхід не працює для переходу з однієї версії на попередню версію до іншої попередньої версії - він працює лише для переходу на версію до версії.
crimbo

@James Roland це було б чудово, якщо ви зможете виділити попередження про попереднє звільнення crimbo у відповідь
eglasius

51

Відповідь Ксав'є я досить мало використав. Хочу додати, що обмеження версії пакету до визначеного діапазону легко та корисно в останніх версіях NuGet.

Наприклад, якщо ви ніколи не хочете Newtonsoft.Jsonоновлювати минулу версію 3.x.xсвого проекту, змініть відповідний packageелемент у вашому packages.configфайлі, щоб виглядати так:

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

Помітьте allowedVersionsатрибут. Це обмежить версію цього пакета версіями між 3.0( включно ) та 4.0( ексклюзивно ). Тоді, коли ви робите Update-Packageціле рішення, вам не потрібно турбуватися про те, що оновлений пакет оновлений минулою версією 3.x.x.

Документація на цю функціональність знаходиться тут .


4
Дуже корисно, щоб запобігання NuGet не порушило ваше рішення! (Microsoft.Net.Http v2.1.10, я дивлюся на тебе ...)
Дуглас Барбін

6
Я дивлюся на JQuery 1.9 та 2.0.
Мартін Браун

Microsoft.Owin для мене :-)
bikeman868

19

Тепер це дуже спрощено в Visual Studio 2015 + і далі. Ви можете це робити Downgrade / Upgradeв самому Інтерфейсі користувача, не виконуючи команди в консолі диспетчера пакунків.

  1. Right click on your projectі go to Manage Nuget Packages.

  2. Подивіться на зображення нижче.

    • Select your Package and Choose the Version, яку ви хотіли встановити.

Вікно Nuget Manager Package Project

Дуже дуже просто, чи не так? :) Сподіваюся, що це допомагає ...


1
так! Це шлях: :)
Синдром

0

Ще один ручний варіант, щоб отримати його:

.nuget\nuget.exe install Newtonsoft.Json -Version 4.0.5
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.