eliminar la restauración del paquete nuget de la solución

148

Agregué la función de restauración de paquete nuget reciente a una solución usando 'Habilitar restauración de paquete NuGet': http://docs.nuget.org/docs/workflows/using-nuget-without-committing-packages

Sin embargo, rompió mi servidor de compilación y no tuve tiempo de arreglarlo, así que quise eliminarlo. Por lo que sé, no hay ninguna opción para eso, así que eliminé la siguiente línea manualmente de todos mis archivos * .csproj:

<Import Project="$(SolutionDir)\.nuget\nuget.targets" />

El problema ahora es que cada vez que mis archivos * .csproj se desprotegen o abren mi solución, la línea se agrega automáticamente nuevamente, interrumpiendo mi compilación si accidentalmente la ingreso :(

¿Alguna idea de cómo puedo eliminarlo de forma permanente?

ACTUALIZACIÓN: a pesar de la respuesta a continuación, sigue volviendo al abrir la solución, ¿alguien con el mismo problema?

Wiebe Tijsma
fuente
2
¿No puede simplemente revertir el conjunto de cambios en el control de origen?
Betty
bueno, fue un conjunto de cambios bastante grande, pero gracias a tu comentario, eché un vistazo, y parece que también agregó una carpeta .nuget en la ruta de la solución, la eliminé también para ver si soluciona el problema
Wiebe Tijsma
¿Lograste arreglar el servidor de compilación? (y es que TeamCity?), debido a que la línea de proyecto de importación que cita anterior es lo que está causando mi TeamCity construye a fallar
Baldy
@Baldy No, estamos usando TFS Build y realmente no busqué una solución, simplemente la
eliminé
3
He creado un problema para que el equipo de NuGet solucione este problema. Por favor, vote hacia arriba
deadlydog

Respuestas:

214

No me veía muy bien, hay otra propiedad agregada a los archivos del proyecto:

<RestorePackages>true</RestorePackages>

Solo tiene que eliminar esto y todas estas líneas manualmente de todos los archivos * .csproj:

  <Import Project="$(SolutionDir)\.nuget\nuget.targets" />

ACTUALIZAR:

Resulta que es un pequeño bicho persistente, si está editando manualmente los archivos de su proyecto, asegúrese de cerrar la solución y eliminar todas las líneas del proyecto a la vez , de lo contrario, solo se agregarán nuevamente una vez que el proyecto se vuelva a cargar ...

ACTUALIZACIÓN2:

Elimine la carpeta .nuget de la raíz de la solución también

ACTUALIZACIÓN3:

Una versión posterior de NuGet agrega otra sección que debe eliminar:

 <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
    <PropertyGroup>
      <ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them.  For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
    </PropertyGroup>
    <Error Condition="!Exists('$(SolutionDir)\.nuget\NuGet.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\.nuget\NuGet.targets'))" />
  </Target>

Actualización4

Dentro del NuGet.Targetsubicado en la .nugetcarpeta, hay otra sección que se agrega a los nuevos proyectos ... cámbielo a falso.

<!-- We need to ensure packages are restored prior to assembly resolve -->
<BuildDependsOn Condition="$(RestorePackages) == 'false'">
    RestorePackages;
    $(BuildDependsOn);
</BuildDependsOn>
Wiebe Tijsma
fuente
77
Descubrí que también hay un <Import Project="$(SolutionDir)\.nuget\nuget.targets" />archivo al final del archivo .csproj que debe eliminarse manualmente.
TimDog
66
¡DECIR AH! retrocede lentamente :)
TimDog
55
Esto también me ha estado plagando. Si sus proyectos tienen muchas soluciones diferentes, la función de restauración de paquetes causa montones de problemas.
Damian
77
"Asegúrese de cerrar la solución" es realmente importante aquí, ya que VS2010 parece almacenar en caché los archivos csproj / msbuild (sin detectar ciertas modificaciones). No noté este comportamiento en VS2012, pero esto me ha afectado mucho al modificar estos archivos dentro de VisualStudio.
Xavier Decoster
44
He creado un problema para que el equipo de NuGet solucione este problema. Por favor, vote hacia arriba
deadlydog
48

Para deshabilitar Nuget Package Restore:

  1. Eliminar carpeta .nuget
  2. Eliminar líneas específicas de todos los archivos .csproj

Líneas para eliminar:

<Import Project="$(SolutionDir)\.nuget\nuget.targets" />
<RestorePackages>true</RestorePackages>

Nota: Asegúrese de hacer todos los cambios de una vez antes de volver a cargar la solución o, de lo contrario, los agregará nuevamente.

Esto se basa en el siguiente artículo: http://bartwullems.blogspot.no/2012/08/disable-nuget-package-restore.html

Además, es posible que desee verificar que esta opción esté deshabilitada: http://docs.nuget.org/docs/workflows/using-nuget-without-committing-packages

angularsen
fuente
He creado un problema para que el equipo de NuGet solucione este problema. Por favor, vote hacia arriba
deadlydog
1
Gracias, para mí fue simplemente desestimar esa opción
Maarten Kieft
He utilizado la herramienta IFix con gran éxito en la limpieza de repositorios con muchos proyectos. Básicamente automatiza estos pasos. visualstudiogallery.msdn.microsoft.com/...
angularsen
La carpeta .nuget está oculta y debe eliminarla del directorio, no solo del proyecto.
Erik Bergstedt
8

¿No es esta configuración aquí?

Opciones ... -> Administrador de paquetes Nuget -> [desmarcar] Permitir que Nuget descargue paquetes faltantes

ingrese la descripción de la imagen aquí

Estoy usando Visual Studio Professional + Resharper 8.2

orad
fuente
Eliminé la carpeta de paquetes y borré la caché del paquete para solucionar mi problema. ¡Gracias!
Tresto
1
No, no actualiza los archivos .proj después, por lo que el problema vuelve, pero es bueno hacerlo aquí también :-)
schmoopy
La ventana de resultados muestra esto durante la construcción: Restoring NuGet packages... To prevent NuGet from restoring packages during build, open the Visual Studio Options dialog, click on the Package Manager node and uncheck 'Allow NuGet to download missing packages during build.'es solo una confirmación de que este debería ser el camino a seguir.
Musulmán Ben Dhaou
1
Esto no está relacionado con Nuget Package Restore. Las versiones anteriores de VS tenían un elemento de menú contextual para proyectos titulado "Habilitar restauración de paquetes Nuget" que crearía una .nuget/carpeta y modificaría su .csprojreferencia a un .targetsarchivo. Se suponía que nuget.exedebías comprometerlo con tu VCS (¡eww, sin resolver el problema que Nuget resuelve!) Y fealdad como esa. Hoy en día, msbuild /restoreexiste la restauración del paquete incorporado de VS. El OP pregunta cómo eliminar la vieja y mala forma de hacer las cosas, no cómo deshabilitar el soporte de restauración de paquete integrado correcto de VS.
binki
5

Las soluciones que actualmente usan MSBuild-Integrated package restore pueden migrarse a Automatic Package Restore. Por lo que entiendo, esto debería ayudar a aquellos que enfrentan problemas de creación de CI. (Corrígeme si me equivoco).

Consulte el documento en el sitio web de nuget: Migración de soluciones integradas de MSBuild para usar Restauración automática de paquetes en http://docs.nuget.org/docs/workflows/migrating-to-automatic-package-restore

Hay información allí para convertir con y sin TFS.

David Ebbo también publicó información en http://blog.davidebbo.com/2014/01/the-right-way-to-restore-nuget-packages.html

James Bradt
fuente
3

NuGet tiene una publicación de blog sobre la migración a la restauración automática de paquetes: http://docs.nuget.org/docs/workflows/migrating-to-automatic-package-restore

Hay una secuencia de comandos de PowerShell referenciada en la publicación del blog que se encargará de eliminar las líneas necesarias automáticamente (y de forma recursiva): https://github.com/owen2/AutomaticPackageRestoreMigrationScript/blob/master/migrateToAutomaticPackageRestore.ps1

Al ofrecer una opción Desactivar la restauración del paquete NuGet directamente, está marcado como No se solucionará: https://nuget.codeplex.com/workitem/1883

Nitin Agarwal
fuente
2

Seguí la solución aceptada en vano con 2012. Sin embargo, esto funcionó,

  1. Cierra completamente el VS
  2. Actualizar el <RestorePackages>true</RestorePackages>que <RestorePackages>false</RestorePackages>y elimine la <Import Project="$(SolutionDir)\.nuget\nuget.targets" />línea de
  3. También cambió el nombre de nuget.exeanuget.exe.NotExe
Daryl
fuente
2

Para cualquiera que todavía necesite limpiar un proyecto utilizando la restauración del paquete NuGet de estilo antiguo, la herramienta IFix disponible aquí automatiza el proceso.

Simplemente ejecute el instalador ( IFixse agregará a PATH) y luego ejecute lo siguiente:

IFix nugetrestore --fix

Puede ejecutarlo primero en modo de verificación para ver qué limpiará:

IFix nugetrestore --check
Simon Fox
fuente
1

Tuve el mismo problema. Lo que terminé haciendo: 1) ir a cada archivo .csproj del proyecto en la solución, abrirlo en el bloc de notas, luego eliminar la parte del xml y guardarlo.

2) Luego eliminé todos los archivos package.config de toda la solución.

3) Luego tuve que eliminar las carpetas .nuget y package.

En este punto, tenía una solución completamente libre de NuGet.

4) Luego hice referencia manual a cualquier DLL necesario y presioné compilar y la solución funcionó como un campeón sin que se necesitaran los paquetes NuGet.

Andy30acre
fuente
1

Vaya al directorio de la solución donde tiene la [$(SolutionDir)\.nuget\nuget.targets] .nugetcarpeta y el nuget.targetsarchivo debajo, elimine la carpeta y cambie las líneas de eliminación de su csproj por última vez.

El problema no volverá a molestarte de nuevo.

arvind
fuente
1

Elimine el archivo packages.config de su solución.

Latencia
fuente
0

Accidentalmente habilité esta opción de "restauración de paquete" al abrir mi proyecto en VS2012 RC y comencé a recibir errores que se parecían a:

"Error 1 No se puede encontrar 'C: \ FolderX \ SomeProject.nuget \ nuget.exe'"

Para corregir el error, seguí las instrucciones anteriores, abrí cada archivo de proyecto en el bloc de notas y eliminé la línea RestorePackage.

Dmitry Lyalin
fuente
0

Pude resolver este problema siguiendo estos pasos:

1) asegúrese de realizar una copia de seguridad de todos sus cambios actuales de archivos desprotegidos.

2) elimine físicamente la carpeta de la solución de su C: \ (ruta que está asignada a TFS).

3) obtenga lo último de TFS para su solución.

4) copie (si corresponde) sus cambios de la copia de seguridad que realizó en el paso 1.

Espero que ayude !

Rajesh
fuente
-2

Me encontré exactamente con el mismo problema y traté de eliminar todas las etiquetas .nuget y RestorePackage de los archivos del proyecto, pero un proyecto simplemente no se volvió a cargar, sin importar cuán minuciosamente lo examiné para las etiquetas .nuget y RestorePackages. Supongo que hay algunas referencias ocultas a esto en alguna parte.

Al final, fue más fácil copiar los archivos y crear un nuevo proyecto e importarlo a la solución.

Peter
fuente
-8

Nuget apesta. Simplemente elimine los nugets y elimine o comente los elementos del paquete de packages.config en el directorio raíz de los proyectos donde esto es un problema. Utilice referencias directas en alguna carpeta lib en su lugar.

<?xml version="1.0" encoding="utf-8"?>
  <packages>
    <!--<package id="EntityFramework" version="6.0.2" targetFramework="net45" />-->
  </packages>
Igor N
fuente
Es una mierda, como cualquier otro producto, si no sabes cómo usarlo y no te esfuerzas por entenderlo.
Wiebe Tijsma
Eso es cierto, pero en mi opinión empujado no te da suficiente control sobre tu proyecto. Además, la GUI de Nuget necesita algunas actualizaciones serias. 1. No es intuitivo, 2. Es difícil administrar el paquete 3. Es difícil desactivar la restauración 4. Descarga paquetes innecesarios 5. A veces no puede restaurar paquetes
Igor N
Estoy de acuerdo en cierta medida, aunque creo que realmente es mejor no tener ningún administrador de paquetes. Parece que están trabajando en las actualizaciones serias de la GUI para nuget 3.0: blog.nuget.org/20141112/nuget-3.0-preview.html
Wiebe Tijsma