Tengo solución y proyecto en Visual Studio 2012.
El proyecto tiene un archivo packages.config
en la raíz del proyecto.
A los fines de esta pregunta, supongamos que eliminé accidentalmente estas bibliotecas de la References
sección de mi proyecto.
Al ingresar al administrador de paquetes NuGet, la interfaz aún informa un tic junto a estos paquetes, lo que indica que están instalados.
La única forma en que puedo ver cómo solucionar esta situación es eliminar todas las entradas packages.config
, lo que solucionará el problema de que la interfaz NuGet los informe como instalados y vuelva a agregar cada uno.
¿Hay una manera más inteligente? Tenía la esperanza de habilitar 'habilitar nuget para restaurar los paquetes faltantes' resolvería esto, pero no parece hacer nada.
Usted necesita Habilitar paquete NuGet restaurar en el nivel de la solución VS para la restauración paquete que falta para el trabajo.
fuente
En caso de que esto ayude a alguien, para mí nada de lo anterior fue suficiente. Todavía no podía construir, VS todavía no podía encontrar las referencias. La clave era simplemente cerrar y volver a abrir la solución después de restaurar los paquetes.
Aquí está el escenario (usando Visual Studio 2012):
Abre una solución que tiene paquetes faltantes. Las referencias muestran que VS no puede encontrarlos. Hay muchas formas de restaurar los paquetes faltantes, incluidos
nuget restore
si tienes la línea de comando nuget instaladaPero no importa cuál sea el enfoque, esas referencias aún se mostrarán como faltantes. Y cuando construyas, fallará. Suspiro. Sin embargo, si cierra la solución y la vuelve a abrir, ahora VS
<HintPath>
vuelve a comprobar esos bonitos mensajes de correo electrónico , descubre que los paquetes están de vuelta a donde pertenecen y todo está bien con el mundo.Actualizar
¿Visual Studio todavía no ve que tiene el paquete? ¿Sigue mostrando una referencia que no puede resolver? Asegúrese de que la versión del paquete que restauró sea exactamente la misma que la
<HintPath>
de su archivo .csproj. Incluso un número menor de corrección de errores (por ejemplo, 1.10.1 a 1.10.2) hará que la referencia falle. Puede solucionar esto editando directamente su csproj xml, o bien eliminando la referencia y haciendo una nueva que apunte a la versión recién restaurada en el directorio de paquetes.fuente
.csproj
archivo para asegurarme de que los números de versión coinciden funcionó para mí. ¡Gracias!Si bien la solución proporcionada por @jmfenoll funciona, se actualiza a los últimos paquetes. En mi caso, después de instalar beta2 (versión preliminar) actualizó todas las bibliotecas a RC1 (que tenía un error). Por lo tanto, la solución anterior solo hace la mitad del trabajo.
Si se encuentra en la misma situación que yo y desea sincronizar su proyecto con la versión exacta de los paquetes NuGet que tiene / o especificó en su
packages.config
, entonces, este script podría ayudarlo. Simplemente cópielo y péguelo en su Consola de administrador de paquetesY luego ejecútelo con un nombre de paquete específico como
o para todos los paquetes como
Los créditos van a Dan Haywood y su publicación de blog .
fuente
El siguiente script se puede ejecutar en la ventana de la Consola del Administrador de paquetes y eliminará todos los paquetes de cada proyecto en su solución antes de reinstalarlos.
Esto ejecutará nuevamente la secuencia de comandos de instalación de cada paquete, lo que debería restaurar las referencias de ensamblaje faltantes. Desafortunadamente, todo lo demás que pueden hacer los scripts de instalación, como crear archivos y modificar configuraciones, también volverá a suceder. Probablemente querrá comenzar con una copia de trabajo limpia y usar su herramienta SCM para elegir qué cambios en su proyecto mantener y cuáles ignorar.
fuente
Agregué las DLL manualmente. Haga clic derecho en Referencias en el proyecto, seleccione Agregar referencia y luego, en el cuadro de diálogo, presione el botón Examinar. Las DLL de NuGet estaban en el directorio de paquetes de la solución. Para obtener los nombres de ellos, puede hacer clic con el botón derecho en las referencias de otro proyecto que funciona correctamente y seleccionar propiedades y buscar en la propiedad de ruta.
fuente
En Visual Studio 2015 (Soulution está bajo control de origen, MVC-Project), csano
Update-Package -Reinstall -ProjectName Your.Project.Name
funcionó, pero se equivocó con algunos bloqueos de escritura.Tuve que eliminar los "paquetes" -Folder manualmente antes. (Parecía estar bloqueado debido al control de la fuente).
Además, tuve que volver a instalar el paquete MVC desde el Administrador de paquetes NuGet.
fuente
Este script reinstalará todos los paquetes de un proyecto sin estropear las dependencias o instalar dependencias que puedan haberse eliminado intencionalmente. (Más para sus desarrolladores de paquetes parciales).
fuente
En caso de que ayude a alguien: en mi caso, tengo algunas bibliotecas compartidas (que tienen sus propios proyectos / soluciones TFS) combinadas en una sola solución.
Nuget restauraría los proyectos con éxito, pero faltaría la DLL.
El problema subyacente era que, si bien su solución tiene su propia carpeta de paquetes y los ha restaurado correctamente a esa carpeta, el archivo del proyecto (por ejemplo, .csproj) hace referencia a un proyecto diferente que puede no tener el paquete descargado. Abra el archivo en un editor de texto para ver de dónde provienen sus referencias.
Esto puede ocurrir al administrar paquetes en diferentes soluciones compartidas interconectadas, ya que probablemente desee asegurarse de que todas las DLL estén en el mismo nivel, puede establecer esto en el nivel superior. Esto significa que a veces buscará una solución completamente diferente para una DLL a la que se hace referencia y, por lo tanto, si no tiene todos los proyectos / soluciones descargados y actualizados, puede obtener el problema anterior.
fuente
Tengo que estar de acuerdo con @Juri en que la respuesta muy popular de jmfenoll no está completa. En el caso de referencias rotas, afirmo que la mayoría de las veces no desea actualizar al último paquete, sino que solo arregla sus referencias a las versiones actuales que está utilizando. Y Juri proporcionó una función útil
Sync-References
para hacer precisamente eso.Pero podemos ir un poco más allá, permitiendo la flexibilidad de filtrar por proyecto y paquete:
fuente
Tuve el mismo problema con las referencias faltantes. Debajo de mi escenario:
Todos los números de versión en el proyecto y los paquetes coinciden, y la restauración de nuget (en todas sus formas) no funcionó.
Cómo lo arreglé: simplemente elimine las carpetas del paquete en la raíz de la solución y ejecute nuget restore. En este punto, los archivos DLL se descargan correctamente y se pueden agregar para las referencias que faltan.
fuente
Sufrí demasiado de este problema, en mi caso se verificó la descarga de NuGet que faltaba (pero no se está restaurando) y no puedo desinstalar y volver a instalar porque modifiqué algunos de los paquetes instalados ... entonces:
Acabo de limpiar el caché y reconstruir y funcionó. (Tools-Option-Nuget Package Manager - General)
También este enlace ayuda a https://docs.nuget.org/consume/package-restore/migrating-to-automatic-package-restore .
fuente
Desinstale todos los paquetes y elimine las dependencias
Borrar la carpeta de paquetes en la raíz del proyecto
Copie el paquete modifica.config en la carpeta raíz del sitio web
Ejecute este código para restaurar el proyecto.
fuente