¿Cómo instalar una versión anterior del paquete a través de NuGet?

384

Quiero instalar una versión anterior de un paquete ( Newtonsoft.Json). Pero NuGet retrocede.

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

Cualquier ayuda será apreciada.

Nebide Yildiz
fuente
3
posible duplicado de Descargar la versión anterior del paquete con nuget
Dirk Vollmar

Respuestas:

579

prueba lo siguiente:

Uninstall-Package Newtonsoft.Json -Force

seguido por:

Install-Package Newtonsoft.Json -Version <press tab key for autocomplete>
Xavier Decoster
fuente
twitterizer usa Newtonsoft.Json, tengo que instalar más viejo sin desinstalar más nuevo. PM> Uninstall-Package Newtonsoft.Json Uninstall-Package: No se puede desinstalar 'Newtonsoft.Json 4.0.8' porque 'twitterizer 2.4.0.26532' depende de ello.
Nebide Yildiz
99
No mencionó las dependencias existentes en el paquete, así que no estaba al tanto de eso: intente agregar el interruptor -Force al comando desinstalar-paquete (como se editó anteriormente)
Xavier Decoster
Perdón por mi falta. -Fuerza funcionó e instalé el anterior. Muchas gracias.
Nebide Yildiz
al desinstalar EntityFramework 6 beta para cambiar a la versión 5, recibía mensajes que me decían que reiniciara VS para completar la desinstalación, pero al hacerlo no eliminé el mensaje. Simplemente entré en la carpeta de paquetes y eliminé la estructura de árbol vacía restante de allí y luego fue exitosa
Simon_Weaver
@Simon_Weaver Sospecho que el paquete EF 6 está haciendo algo que causa esto (noté algún código de AppDomain, por ejemplo, en los scripts de PowerShell, por lo que es probable que VS se esté quedando con algunos de los dll)
Xavier Decoster
266

A partir de Nuget 2.8 hay una función para degradar un paquete.

Notas de lanzamiento de Nuget 2.8

Ejemplo:

El siguiente comando ingresado en la Consola del Administrador de paquetes degradará el cliente de base a la versión 1.3.1.0

Update-Package CouchbaseNetClient -Version 1.3.1.0

Resultado:

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

Algo a tener en cuenta según el crimbo a continuación:

"Este enfoque no funciona para degradar de una versión preliminar a otra versión preliminar, solo funciona para degradar a una versión de lanzamiento"

James Roland
fuente
13
Esta debería ser la respuesta aceptada, ya que es la mejor solución con un mínimo esfuerzo.
Peter
Sí, funciona a las mil maravillas, incluida la degradación de todas las dependencias - perfecto
Peter
77
Desafortunadamente, este enfoque no funciona para degradar de una versión preliminar a otra versión preliminar, solo funciona para degradar a una versión de lanzamiento.
crimbo
@James Roland, sería genial si puedes resaltar la advertencia de prelanzamiento de crimbo en la respuesta
eglasius
51

He usado bastante la respuesta de Xavier. Quiero agregar que restringir la versión del paquete a un rango específico es fácil y útil en las últimas versiones de NuGet.

Por ejemplo, si nunca desea Newtonsoft.Jsonactualizar la versión anterior 3.x.xde su proyecto, cambie el packageelemento correspondiente en su packages.configarchivo para que se vea así:

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

Observe el allowedVersionsatributo Esto limitará la versión de ese paquete a versiones entre 3.0( inclusivo ) y 4.0( exclusivo ). Luego, cuando hace una Update-Packagesolución completa, no necesita preocuparse de que ese paquete en particular se actualice en una versión anterior 3.x.x.

La documentación para esta funcionalidad está aquí .

conocer
fuente
44
¡Muy útil para evitar que las actualizaciones de NuGet rompan su solución! (Microsoft.Net.Http v2.1.10, te estoy mirando ...)
Douglas Barbin
66
Estoy mirando JQuery 1.9 y 2.0.
Martin Brown
Microsoft.Owin para mí :-)
bikeman868
19

Ahora, está muy simplificado en Visual Studio 2015 + en adelante. Puede hacerlo Downgrade / Upgradedentro de la propia interfaz de usuario, sin ejecutar comandos en la consola de Package Manager.

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

  2. Mira la imagen de abajo.

    • Select your Package and Choose the Version, que querías instalar.

Ventana Nuget Package Manager del proyecto

Muy, muy simple, ¿no es así? :) Espero que esto ayude...

RajeshKdev
fuente
1
¡Sí! Este es el camino a seguir :)
Síndrome del Impostor
0

Otra opción más manual para obtenerlo:

.nuget\nuget.exe install Newtonsoft.Json -Version 4.0.5
knocte
fuente