2012-04-18 30 views
339

Quiero instalar una versión anterior de un paquete (Newtonsoft.Json). Pero NuGet retrocede.¿Cómo instalar una versión anterior del paquete a través de 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'. 

Cualquier ayuda será muy apreciada.

+3

posible duplicado de [Descargar la versión anterior del paquete con nuget] (http://stackoverflow.com/questions/5628689/download-old-version-of-package-with- nuget) –

Respuesta

526

pruebe lo siguiente:

Uninstall-Package Newtonsoft.Json -Force 

seguido de:

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

twitterizer utiliza Newtonsoft.Json, tengo que instalar más viejo sin desinstalar más nuevo. PM> Desinstalar-Paquete Newtonsoft.Json Uninstall-Package: No se puede desinstalar 'Newtonsoft.Json 4.0.8' porque 'twitterizer 2.4.0.26532' depende de ello. –

+6

No mencionó las dependencias existentes en el paquete, así que no estaba al tanto de eso: intente agregar el modificador -Fuerza al comando uninstall-package (como se editó anteriormente) –

+0

Disculpe por mi falta. -Fuerza funcionó e instalé la anterior. Muchas gracias. –

46

he utilizado la respuesta de Xavier bastante. 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 no desea que se actualicen Newtonsoft.Json pasada versión 3.x.x en su proyecto, cambiar el package elemento correspondiente en el archivo de packages.config a tener este aspecto:

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

Aviso el atributo allowedVersions. Esto limitará la versión de ese paquete a las versiones entre 3.0 (inclusive) y 4.0 (exclusive). Luego, cuando realice un Update-Package en toda la solución, no tiene que preocuparse de que ese paquete en particular se actualice después de la versión 3.x.x.

La documentación para esta funcionalidad es here.

+4

¡Muy útil para evitar que las actualizaciones de NuGet rompan su solución! (Microsoft.Net.Http v2.1.10, te estoy mirando ...) –

+6

Estoy mirando JQuery 1.9 y 2.0. –

241

Como de Nuget 2,8 hay una característica a rebaja un paquete.

Nuget 2.8 Release Notes

Ejemplo:

El siguiente comando entró en la consola de Administrador de paquetes degradará el cliente couchbase 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]. 

Someth ing tener en cuenta según crimbo a continuación:

"este enfoque no funciona para degradar desde una versión preliminar a otra versión preliminar - sólo 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

+0

Sí, funciona como un amuleto, incluida la degradación de todas las dependencias: perfecto – peter

+7

Desafortunadamente, este enfoque no funciona para la degradación de una versión preliminar a otra versión preliminar: solo funciona para la degradación a una versión comercial. – crimbo

11

Ahora, es mucho simplificado en Visual Studio 2015. Puede hacer Downgrade/Upgrade dentro de la interfaz de usuario, sin ejecutar comandos en la consola del Administrador de paquetes.

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

  2. Mire la imagen de abajo.

    • Select your Package and Choose the Version, que desea instalar.

Nuget Package Manager window of Project

muy muy simple, ¿verdad? :) Espero que esto ayude ...

+0

¡La mejor respuesta! –

Cuestiones relacionadas