c# - studio - restaurar paquetes nuget console
Todos los proyectos que hacen referencia al subproyecto deben instalar el paquete NuGet Microsoft.Bcl.Build(C#/ Windows Phone 7)? (2)
Estoy teniendo una sesión de refactorización particularmente difícil que involucra una solución de C # con varios proyectos en Visual Studio 2012. Necesitaba extraer un montón de código en sus propios ensamblajes para poder compartir el código en varios proyectos, todo en la misma solución. Sin embargo, no importa lo que intente, recibo advertencias para los proyectos que hacen referencia a los nuevos proyectos compartidos de que "Todos los proyectos que hagan referencia a {nombre del proyecto compartido} deben instalar el paquete nuget Microsoft.Bcl.Build".
He revisado los proyectos dependientes y los proyectos compartidos con un peine de dientes finos, verificando en detalle que todos usan la misma versión y exactamente la misma DLL para Microsoft.Bcl versión 1.0.1.19 y Microsoft.Bcl.Async versión 1.0. 16 paquetes:
- System.Runtime
System.Threading.Tasks
Microsoft.Threading.Task
- Microsoft.Threading.Tasks.Extensions
- Microsoft.Threading.Tasks.Extensions.Phone
Las rutas de DLL son todas resueltas e idénticas. El archivo XAP se genera, pero todavía recibo una advertencia que me dice que no se hace referencia a Microsoft.Bcl.Build en los proyectos dependientes, a pesar del hecho de que puedo ver que lo es.
Si intento, en su lugar, desinstalar y luego reinstalar esos dos paquetes usando NuGet para cada proyecto involucrado, obtengo referencias con rutas vacías y el icono de advertencia para las 5 referencias de DLL involucradas. Por alguna razón, NuGet agrega las referencias pero no puede encontrar las DLL. Además, si hago esto, con frecuencia me encuentro con el problema de tener proyectos en los que obtengo el error "No se puede agregar la referencia" al intentar agregar una referencia. Luego cerré y volví a abrir la solución, y eso lleva a un error de "proyecto no se pudo cargar". Así que tengo que editar el archivo del proyecto manualmente, eliminar las declaraciones de importación del paquete defectuoso y volver a cargar el proyecto.
¿Cómo puedo solucionar este problema y cuál es la técnica general para evitar este dolor de cabeza en el futuro? Dejar que NuGet administre los paquetes faltantes no ayudó en absoluto.
Acabo de solucionar el mismo problema y se abre un error aquí: http://nuget.codeplex.com/workitem/3268
Lo que he hecho es lo siguiente, agregué al nivel de solución el paquete Microsoft.Bcl.Build
En mi env de desarrollo, si no tiene el paquete cargado, simplemente haga clic derecho en la solución y seleccione administrar paquetes nuget, verá una barra amarilla con un botón de restauración, simplemente haga clic en ella y estará bien.
En mi script de compilación antes de compilar el proyecto, ejecuto este comando:
./myproject/.nuget/NuGet.exe install ./myproject/.nuget/packages.config -OutputDirectory ./myproject/packages
Esto restaurará los paquetes de nivel de solución y estará bien.
Esto debería solucionarse a fines de este verano en la versión 2.7 de acuerdo con el informe del problema
En caso de que alguien más se encuentre con esto y la solución de @ Swell te haya hecho pasar "wtf":
Hace poco pasé por un proyecto MVC más antiguo y lo actualicé (paquetes de nuget actualizados de maquinilla de afeitar, asp, http, etc.). El proyecto, independiente de sí mismo, se construyó bien, pero cuando fui a publicarlo falló con los errores del OP.
Resulta que es porque no actualicé el proyecto *.Tests
asociado (debería haberlo imaginado, aunque no estoy seguro de por qué Tests está tan relacionado con el proyecto). Entonces, para arreglar:
- Haga clic derecho en la Solución y administre los paquetes nuget.
- Revise todos los paquetes que se actualizaron en el proyecto web y aplíquelos también a los otros proyectos (cada "Actualización" mostrará un árbol con los proyectos correspondientes, estaba bien simplemente haciendo clic ACEPTANDO).
- Reconstruir.
Ahora deberías ser bueno y no debería ladrarte. Espero que ayude a los demás.