2011-06-21 32 views
14

Me gustaría eliminar un paquete Nuget completo e instalarlo limpiamente en mi proyecto nuevamente.Paquete Nuget Clean Eliminar/Instalar

Lamentablemente, por alguna razón se salta la eliminación de archivos que han sido "modificados", y luego omite ponerlos en el proyecto en la reinstalación, porque ya existen.

¿Hay algún indicador que pueda configurar para eliminar incondicionalmente cada rastro de un paquete nuget, alternativamente sobrescribir todos los archivos existentes?

Gracias.

Respuesta

11

Lamentablemente, en este momento, NuGet no hace lo que usted desea. Durante el proceso de desinstalación, NuGet solo eliminará los archivos de contenido si no se han modificado. Y como habrás notado, el proceso de actualización tampoco actualizará los archivos que fueron modificados.

El comando Uninstall-Package tiene una opción -Fuerza, pero es para "forzar" la desinstalación incluso si hay otros paquetes que dependen de esta.

Sin duda podemos presentar esto como un problema y tal vez incorporarlo a una versión futura.

Otra opción sería crear una secuencia de comandos de PowerShell que enumerará el contenido de un paquete, y luego le permitirá eliminar todos los archivos de contenido. Veré si hay una manera simple de hacer esto.

BTW: Quizás pueda encontrar una forma mejor de extender el archivo de contenido existente que no sea modificarlo directamente. Especialmente porque está perdiendo sus cambios cuando el paquete se actualiza.

+0

Tengo este problema también. La cuestión es que no he modificado el contenido de ningún archivo. Todo lo que he hecho es agregar los archivos a un repositorio svn. Supongo que cualquier atributo que SVN agregue al archivo se interpreta también como modificaciones. Esto hace que usar Nuget sea realmente inconveniente para cualquiera que use un sistema de control de fuente. – Sean

+2

¿Ha cambiado esta respuesta en los últimos 15 meses? –

+0

@PatrickSzalapski sí - vea mi respuesta –

3

¡La versión 1.6 de NuGet tiene una función de eliminar paquete! http://docs.nuget.org/docs/release-notes/nuget-1.6

si la actualización de la extensión falla (missmatch signatur), acaba de desinstalar y reinstalar. Este es un problema conocido.

+4

Su página citada no parece referirse a un 'eliminar función del paquete '. ¿Puedes explicar de qué' problema conocido 'estás hablando y qué aspecto de la v1.6 y posteriores aborda eso? En este momento tu respuesta, aunque bien intencionada, es muy difícil adivinar información útil de –

6

¡Ahora puede hacer lo que quiera! (finalmente)

Necesita actualizar primero a la última NuGet (creo que esta característica se agregó alrededor de abril de 2013). Haga esto yendo a Tools > Extensions and Updates y haga clic en Updates para actualizar nuget.

Luego, el parámetro -FileConflictAction le permitirá sobrescribir los archivos.

Install-Package Microsoft.jQuery.Unobtrusive.Validation -Version 2.0.30506.0 -FileConflictAction Overwrite 

(PowerShell Command Reference for Install-Package)

0

creo que esto que me pasó un par de veces. Vaya al archivo packages.config que debería ser el directorio raíz de su proyecto y elimine al insurgente (en su caso, la línea con el paquete: SignalR). Esto le dirá a NuGet que el paquete nunca fue instalado.

Ahora podrá volver a instalarlo a través del repositorio, luego desinstálelo para que todo vuelva a ser como antes de entrar en este lío. No estoy seguro de cómo está ocurriendo.

Cuestiones relacionadas