2012-04-18 11 views
339

Я хочу установить более старую версию пакета (Newtonsoft.Json). Но NuGet откатывается.Как установить более старую версию пакета через 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'. 

Любая помощь будет принята с благодарностью.

+3

Возможный дубликат [Загрузить старую версию пакета с nuget] (http://stackoverflow.com/questions/5628689/download-old-version-of-package-with- nuget) –

ответ

526

попробуйте следующее:

Uninstall-Package Newtonsoft.Json -Force 

следуют:

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

twitterizer использует Newtonsoft.Json, мне нужно установить более старую, не удаляя более новую. PM> Удалить пакет Newtonsoft.Json Uninstall-Package: Не удается удалить «Newtonsoft.Json 4.0.8», потому что «twitterizer 2.4.0.26532» зависит от него. –

+6

Вы не указали существующие зависимости к пакету, поэтому я не был в этом уверен: попробуйте добавить ключ -Force в команду удаления пакета (как было отредактировано выше) –

+0

Извините за мое отсутствие. -Force работал, и я установил более старый. Большое вам спасибо. –

46

Я использовал ответ Ксавьера совсем немного. Я хочу добавить, что ограничение версии пакета до указанного диапазона легко и полезно в последних версиях 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 (exclusive). Затем, когда вы делаете Update-Package в целом, вам не нужно беспокоиться о том, что данный пакет обновляется прошлой версией 3.x.x.

Документация по этой функциональности - here.

+4

Очень полезно предотвратить обновление обновлений NuGet! (Microsoft.Net.Http v2.1.10, я смотрю на вас ...) –

+6

Я смотрю JQuery 1.9 и 2.0. –

241

От Nuget 2.8 есть функция downgrade a.

Nuget 2.8 Release Notes

Пример:

Следующая команда вошла в Package Manager Console будет понижена клиента couchbase до версии 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]. 

Someth ИНГ отметить, согласно crimbo ниже:

«этот подход не работает для понижения от одной предварительной версии к другой предварительной версии - она ​​работает только для понижения до версии»

+13

Это должен быть принятый ответ как наилучшее решение с минимальными усилиями. – Peter

+0

Да, работает как шарм, включая понижение всех зависимостей - отлично – peter

+7

К сожалению, этот подход не работает для понижения с одной предварительной версии до другой предварительной версии - она ​​работает только для понижения до версии выпуска. – crimbo

11

Теперь, это очень много упрощенное в 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 Package Manager window of Project

Очень Очень просто, не так ли? :) Надеюсь, это поможет ...

+0

Лучший ответ !!!! –

Смежные вопросы