Revisé un proyecto en una computadora, revisé en otra y descubrí que faltan los binarios instalados por NuGet. También podría registrarlos en el control de origen, pero parece que hay una mejor solución:
http://docs.nuget.org/docs/workflows/using-nuget-without-committing-packages
Seguí esas instrucciones, ahora tengo una .nuget
carpeta donde debería estar, tengo las siguientes entradas en mi archivo .csproj:
<RestorePackages>true</RestorePackages>
<Import Project="$(SolutionDir)\.nuget\nuget.targets" />
y, sin embargo, cuando reconstruyo mi solución, los paquetes que faltan no se restauran.
¿Qué me estoy perdiendo? ¿Cómo puedo diagnosticar este problema?
Respuestas:
Tenga en cuenta que puede forzar la ejecución de la restauración del paquete ejecutando los siguientes comandos en la consola del administrador de paquetes nuget
Fuerza la reinstalación de todo en la solución.
Fuerza la reinstalación de todo en el proyecto myProj.
Nota : Esta es la opción nuclear. Al usar este comando, es posible que no obtenga las mismas versiones de los paquetes que ha instalado y eso podría generar problemas. Es menos probable que esto ocurra a nivel de proyecto en comparación con el nivel de solución.
Puede usar la
-safe
opción de parámetro de línea de comandos para restringir las actualizaciones a versiones más nuevas con el mismo componente de versión Mayor y Menor. Esta opción se agregó más tarde y resuelve algunos de los problemas mencionados en los comentarios.fuente
Para otros que se topan con esta publicación, lea esto.
NuGet 2.7+ nos presentó la Restauración automática de paquetes . Esto se considera un enfoque mucho mejor para la mayoría de las aplicaciones, ya que no altera el proceso de MSBuild. Menos dolores de cabeza
Algunos enlaces para comenzar:
fuente
Debe elegir una de las siguientes formas:
Reinstalar un paquete por su nombre en todos los proyectos de la solución:
Reinstalar un paquete por su nombre e ignorar sus dependencias en todos los proyectos de la solución:
Reinstalar un paquete por su nombre en un proyecto:
Reinstalar todos los paquetes en un proyecto específico:
Reinstalar todos los paquetes en una solución:
fuente
¿Habilitó el modo de restauración de paquetes en el proyecto que tiene los paquetes / binarios faltantes? Existe un problema conocido que requiere que los paquetes se instalen correctamente al habilitar el modo de restauración:
http://nuget.codeplex.com/workitem/1879
El enlace original está muerto; esto podría ser un reemplazo: https://github.com/NuGet/Home/issues/1968
fuente
VS 2017
Herramientas> Administrador de paquetes NuGet> Configuración del Administrador de paquetes> General Haga clic en "Borrar todos los cachés NuGet"
fuente
Me he encontrado con este problema en dos escenarios.
Primero, cuando intento construir mi solución desde la línea de comando usando msbuild.exe. En segundo lugar, cuando intento construir el sln y los proyectos que lo contienen en mi servidor de compilación usando TFS y CI.
Recibo errores alegando que faltan referencias. Al inspeccionar tanto mi directorio de compilación local como el del servidor TFS, veo que la carpeta / packages no se crea y los paquetes nuget no se copian. Seguir las instrucciones que figuran en la respuesta de Alexandre http://nuget.codeplex.com/workitem/1879 tampoco me funcionó.
He habilitado Restaurar paquetes a través de VS2010 y he visto que las compilaciones solo funcionan desde VS2010. Nuevamente, el uso de msbuild falla. Mi solución probablemente sea totalmente inválida, pero para mi entorno esto funcionó desde una compilación de línea de comando localmente, así como desde una compilación de CI en TFS.
Entré en. \ Nuget y cambié esta línea en el archivo .nuget \ NuGet.targets:
de:
a: (aviso, sin las comillas alrededor de las variables)
Entiendo que si mis directorios tienen espacios en ellos, esto fallará, pero no tengo espacios en mis directorios, por lo que esta solución consiguió que mis compilaciones se completaran con éxito ... por el momento.
Diré que activar el registro de nivel de diagnóstico en su compilación ayudará a mostrar qué comandos está ejecutando msbuild. Esto es lo que me llevó a hackear el archivo de objetivos temporalmente.
fuente
Si algo más no funcionó, intente:
Funcionó para mí y es fácil de intentar.
fuente
Si ninguna de las otras respuestas funciona para usted, intente lo siguiente, que fue lo único que funcionó para mí:
Encuentra tu
.csproj
archivo y edítalo en un editor de texto.Encuentra la
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
etiqueta en tu.csproj
archivo y elimina todo el bloque.Vuelva a instalar todos los paquetes en la solución:
Después de esto, sus paquetes nuget deberían restaurarse, creo que este podría ser un caso marginal que solo ocurre cuando mueve su proyecto a una ubicación diferente.
fuente
Solo para otros que podrían encontrarse con este problema, pude resolver el problema cerrando Visual Studio y volviendo a abrir el proyecto. Cuando se cargó el proyecto, los paquetes se restauraron durante la fase de inicialización.
fuente
Para mí tenía una etiqueta vacía NuGetPackageImportStamp en .csproj
Idealmente debería contener algún GUID válido.
Quitar la etiqueta mencionada anteriormente y luego "Restaurar Nugets" funcionó para mí.
fuente
A veces sucede algo extraño y el uso de Visual Studio para restaurar automáticamente no funciona. En ese caso, puede usar la consola NuGet Package Manager. Eso se abre en Visual Studio desde Herramientas -> Administrador de paquetes NuGet -> Consola del Administrador de paquetes . Los comandos dentro de la consola son simples. Y para obtener ayuda contextual mientras escribe un comando, simplemente presione el botón y le dará todas las opciones que comienzan con las letras que está escribiendo. Entonces, si un paquete no está instalado, por ejemplo log4net, escriba el siguiente comando:
Paquete de instalación log4net
Puede hacer mucho más, como especificar la versión para instalar, actualizar un paquete, desinstalar un paquete, etc.
Tuve que usar la consola para ayudarme cuando Visual Studio estaba actuando como un bicho raro.
fuente
La restauración automática de paquetes fallará por cualquiera de los siguientes motivos:
El siguiente artículo describe con más detalle cómo abordar los puntos 1-3: https://docs.nuget.org/consume/package-restore/migrating-to-automatic-package-restore
fuente
Tuve paquetes de NuGet que se rompieron después de hacer una Restauración del sistema en mi sistema, haciendo una copia de seguridad de unos dos días. (Mientras tanto, los paquetes NuGet se habían instalado). Para solucionarlo, tuve que ir a la carpeta .nuget \ packages en mi perfil de usuario, buscar los paquetes y eliminarlos. Solo entonces Visual Studio sacaría los paquetes y los agregaría correctamente como referencias.
fuente
La mejor solución que encontré al crear un nuevo proyecto desde cero, luego importé todos los archivos fuente con el código. Mi proyecto no fue tan complicado, así que no tuve ningún problema desde allí.
fuente
Ninguna de las otras soluciones funcionó en mi situación:
Las dependencias de AspNetCore se habían instalado / desinstalado y se estaban almacenando en caché. 'AspNetCore.All' se negaría a actualizar / reinstalar / eliminar correctamente. E independientemente de lo que hice, usaría las dependencias en caché (con las que no era compatible), porque eran una versión superior.
PackageReference
bin
,obj
carpetasTools > Nuget Package Manager > Package Manager Settings
yClear all Nuget caches
. Compruebe la consola porque puede fallar al eliminar algunos elementos: copie la ruta de la carpeta y salga de Visual Studio.Si eso todavía no funciona, repita pero también busque en su unidad en el explorador de Windows
nuget
y elimine todo lo que se vea en caché.fuente
vs2015 no habilita el problema de restauración de nuget. Mi solución:
agregue la carpeta .nuget, agregue el archivo NuGet.Config y NuGet.targets en el directorio .nuget
cada archivo de proyecto agrega: compilación
fuente
Si el error al que se enfrenta es "no se puede conectar al servidor remoto" como era mío, entonces le beneficiaría tener esta verificación además de las verificaciones proporcionadas en los comentarios anteriores.
Vi que había 2 fuentes de paquetes NUGET desde las que se podían descargar los paquetes (dentro de Herramientas-> Administrador de paquetes Nuget-> Configuración del Administrador de empaquetadores). Una de las fuentes del paquete no funcionaba y Nuget estaba tratando de descargar solo desde esa fuente.
Las cosas se pusieron en su lugar una vez que cambié la fuente del paquete para descargar desde: https://www.nuget.org/api/v2/ EXPLICAMENTE en la configuración
fuente
En mi caso, un intento de restauración de Nuget abortado había dañado uno de los
packages.config
archivos de la solución. No descubrí esto antes de revisar mi árbol de trabajo git. Después de revertir los cambios en el archivo, la restauración de Nuget estaba funcionando nuevamente.fuente
Hay un acceso directo para hacer que la restauración de Nuget funcione: 1. Asegúrese de que la conexión a Internet o las URL de Nuget sean correctas en el menú de opciones de VS Tools 2. Mire la carpeta .nuget o nuget en la solución, de lo contrario, copie desde cualquiera para obtener nuget.exe
BORRAR carpetas de paquetes, si existe
Abra la consola del administrador de paquetes, ejecute este comando
fuente
En VS2017, haga clic con el botón derecho en la solución => Abrir línea de comandos => Línea de comandos del desarrollador.
Una vez que esté abierto, escriba (y presione enter después)
Eso restaurará cualquiera / todos los paquetes, y obtendrá una buena salida de consola de lo que se ha hecho ...
fuente