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


Respuestas:


579

prueba lo siguiente:

Uninstall-Package Newtonsoft.Json -Force

seguido por:

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

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"


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


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


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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.