¿Cómo elimino los paquetes NuGet a los que ningún proyecto hace referencia en mi solución?

141

De alguna manera, durante la actualización a VS2012 y .NET 4.5, logré confundir a NuGet. Hay paquetes que aparecen en el administrador de paquetes (y en la carpeta de paquetes) que no puedo eliminar (creo que son paquetes heredados de ASP.NET NuGet que han sido reemplazados por nuevos nombres de paquetes con la nueva versión. Cada uno solo tiene un botón Administrar - pero no hay botón de desinstalación. Y cuando mira para ver dónde se usan, puede ver que ninguno de los proyectos de la solución hace referencia a ellos. ¿ NO muestran una desinstalación?

Howard Pinsley
fuente

Respuestas:

108

Puede usar Package Manager Console con el comando: Uninstall-Package PackageIdpara eliminarlo, o simplemente eliminar la carpeta del paquete de la carpeta 'paquetes' en la carpeta de la solución. Puede encontrar más información sobre Package Manager Console aquí: http://docs.nuget.org/docs/reference/package-manager-console-powershell-reference

Pavel Bakshy
fuente
8
Gracias pavel Tenía la sensación de que simplemente podría eliminar las carpetas. Es un poco desconcertante porque tengo que asegurarme manualmente de que ninguno de los paquetes esté referenciado (no parecen estarlo). Todavía tengo curiosidad por saber por qué el administrador de paquetes no muestra un botón Desinstalar (o eliminar).
Howard Pinsley
2
El administrador de paquetes en el nivel de solución muestra todas las referencias de paquetes a proyectos de la solución y todos los paquetes adicionales que se colocaron en la carpeta de paquetes, pero no se hace referencia. Para estos paquetes no hay capacidad de desinstalación en la interfaz de usuario. Estoy de acuerdo en que es el resultado de un comportamiento incorrecto, pero en este caso debe verificarlo manualmente. Y elimine el paquete o reinstale esto cuando esté seguro de que lo necesita o no.
Pavel Bakshy
1
Simplemente quitando la carpeta y volviendo a NuGet y ver el paquete, de alguna manera todavía se muestra como instalado con la marca verde al lado, mejor hacer la desinstalación adecuada usando la consola.
k80sg
1
@ysrb, es un comando de PowerShell que se convierte en sustantivo verbal como get-user o remove-item, su ejemplo es sustantivo-verbo
Nick Young
1
@ysrb Como dice Nick Young, y además, sería un pésimo cumplido Install-Package.
ProfK
159

He encontrado una solución para esto.

  1. Habilite la restauración de paquetes y la comprobación automática (Opciones / Administrador de paquetes / General)
  2. Elimine todo el contenido de la carpeta de paquetes (¡a la Papelera de reciclaje si está nervioso!)
  3. Gestionar paquetes Nuget para la solución
  4. Haz clic en el botón restaurar.

NuGet restaurará solo los paquetes utilizados en su solución. Terminas con un conjunto agradable y simplificado de paquetes.

James L
fuente
1
No esta no retire el paquete de packages.configy no eliminar las referencias del proyecto?
CodeCaster
1
@CodeCaster es difícil de analizar tu doble negativo. Nada se eliminará de la configuración y las referencias. La idea aquí es eliminar los paquetes NuGet a los que ya no se hace referencia
James L
1
Excelente respuesta! Si está utilizando TFS, primero debe eliminar todo el contenido dentro de ./packages en el explorador de control de origen para que otros clientes, como las máquinas de compilación, también eliminen elementos redundantes.
Alexander Schmidt
44
@ sprinter252, si está utilizando la restauración de paquetes, no debe verificar los paquetes en el control de origen en primer lugar. Ese es uno de los principales beneficios de usar la restauración de paquetes. Como parte de la conversión a la restauración de paquetes, se debe colocar una regla de "ignorar" en la carpeta de paquetes.
Carl Bussema
@CarlBussema Tienes razón. Desde la nueva versión de NuGet, esto no es tan importante porque Nuget no agregará ningún binario en las subcarpetas. Entonces solo obtienes la estructura de carpetas. Mi comentario estaba relacionado con el comportamiento predeterminado de TFS (paquetes de carpetas incluidos). En TFS Anywhere las ignoraciones se ignoran a menudo ;-). Importante para proyectos mixtos con Xamarin.
Alexander Schmidt
17

Primero abra la consola de Package Manager. Luego seleccione su proyecto de la lista desplegable. Y ejecute los siguientes comandos para desinstalar paquetes nuget.

Get-Package

para obtener todo el paquete que tienes instalado.

y entonces

Uninstall-Package PagedList.Mvc

--- para desinstalar un paquete llamado PagedList.MVC

Mensaje

PM> Uninstall-Package PagedList.Mvc
Successfully removed 'PagedList.Mvc 4.5.0.0' from MCEMRBPP.PIR.
Abdus Salam Azad
fuente
Esta respuesta funcionó perfectamente para mí. Mi situación era que el paquete solo aparecía en la pestaña Actualizaciones del cuadro de diálogo ... y cuando presioné Actualizar, ningún proyecto tenía el paquete instalado, por lo que no había forma de actualizarlo o eliminarlo.
azarc3
8

Si desea eliminar / desinstalar el paquete Nuget que se aplica a múltiples proyectos en sus soluciones , vaya a:

  1. Herramientas-> Administrador de paquetes Nuget -> Administrar paquetes Nuget para la solución

  2. En la columna de la izquierda, donde está 'Paquetes instalados', seleccione 'Todos', de modo que verá una lista de paquetes instalados y el botón Administrar en todos ellos.

  3. Seleccione el botón Administrar y obtendrá una ventana emergente, anule la selección de la casilla de verificación en el nombre del proyecto y Ok

El resto del trabajo Package Manager lo hará por usted.


fuente
1
Esta es definitivamente la respuesta que estaba buscando, ¡gracias!
Sal
3

Si eliminó el paquete con la utilidad Uninstall-Package y eliminó el paquete deseado del directorio del paquete bajo la solución (y todavía recibe un error), simplemente abra el archivo * .csproj en el editor de código y elimine la etiqueta manualmente. Como por ejemplo, quería deshacerme del paquete Nuget Xamarin.Forms.Alias y eliminé estas líneas del archivo * .csproj.

Eliminando el paquete nuget del script msbuild

Y finalmente, no olvide volver a cargar su proyecto una vez que se le solicite en Visual Studio (después de cambiar el archivo del proyecto). Lo probé en Visual Studio 2015, pero también debería funcionar en Visual Studio 2010 y en adelante.

Espero que esto ayude.

AB
fuente
2

Una alternativa es instalar el paquete no utilizado que desea eliminar en cualquier proyecto de su solución, después de eso, desinstálelo y Nuget también lo eliminará.

Se necesita un desinstalador adecuado aquí.

D.Rosado
fuente
¿Hay alguna manera de hacer que se desinstale correctamente sin reinstalarlo?
Knox
2

Solución 1

Use la canalización de PowerShell para obtener paquetes y eliminar en una sola declaración como esta

Get-Package | Uninstall-Package

Solución 2

si desea desinstalar paquetes seleccionados, siga estos pasos

  1. Use GetPackagespara obtener la lista de paquetes
  2. Descargar el software de texto Nimble
  3. Copie la salida de GetPackages en NimbleText (para cada fila en la ventana de lista)
  4. Establezca Separador de columna en (si es necesario
  5. Tipo Uninstall-Package $0(Sustituir usando la ventana de patrón)
  6. Copie los resultados y péguelos en Package Manage Console

Que sean todos amigos.

irfandar
fuente
1

Un paquete NuGet puede hacer referencia a otro paquete NuGet. Por lo tanto, tenga mucho cuidado con las dependencias entre paquetes. Acabo de desinstalar un paquete de mapas de Google y posteriormente desinstaló paquetes subyacentes como Newtonsoft, Entity Framework, etc.

Por lo tanto, eliminar manualmente un paquete particular de la carpeta de paquetes sería más seguro.

Aki
fuente
1

Desde la ventana de la consola del Administrador de paquetes, a menudo, cualquier comando que usó para instalar un paquete puede usarse para desinstalar ese paquete. Simplemente reemplace el comando INSTALAR con DESINSTALAR .

Por ejemplo, para instalar PowerTCPTelnet, el comando es:

Install-Package PowerTCPTelnet -Version 4.4.9

Para desinstalar lo mismo, el comando es:

Uninstall-Package PowerTCPTelnet -Version 4.4.9

Jazimov
fuente
1

VS2019> Herramientas> Opciones> Administrador de paquetes Nuget> General> Haga clic en "Borrar todos los caché Nuger"

harris
fuente
-2

Otra forma, y ​​muy simple para mí es:

  1. Vaya a su Soution y luego haga clic derecho sobre esto.

  2. Seleccione la opción "Paquetes de NUgets gestionados para la solución". Eso abre una ventana emergente, en ese clic en el botón "Configuración". Esto abrirá otra ventana emergente y luego buscará: "Administrador de paquetes".

  3. Dentro de la opción "Administrador de paquetes" tiene dos opciones más (I. General II. Fuentes de paquetes) En cada opción desmarque todas las casillas de verificación.

Estos pasos desactivan NuGet de su proyecto.

Espero realmente ayudarte.

amedriveroperez
fuente
-2

Si desea utilizar la opción Visual Studio, consulte el siguiente enlace

http://spvenky.wordpress.com/2014/08/10/how-to-remove-nuget-packages-from-existing-visual-studio-solution/

Paso 1: en Visual Studio, vaya a Herramientas / Administrador de paquetes NuGet / Administre paquetes NuGet para la solución ...

Paso 2: Descomprima sus proyectos de la solución actual

Paso 3: anule la selección de los proyectos y presione OK

usuario1214835
fuente
2
Es preferible escribir la respuesta en StackOverflow en lugar de simplemente publicar un enlace porque los enlaces pueden caducar en el futuro.
Amadeus Sánchez