c# - solución - la compilación se retrasa hasta que terminen de restaurarse los paquetes de bower o npm
Reparando paquetes y referencias de NuGet de una vez por todas (2)
Windows 8.1 Enterprise x64, Visual Studio 2015, MVC 5, EF 6, VS en línea usando git
Soy un desarrollador relativamente nuevo con Visual Studio (aproximadamente nueve meses), y desde que empecé he tenido un tiempo increíblemente difícil con las referencias y los paquetes de NuGet. Todas mis referencias funcionaron correctamente el viernes cuando apagué mi computadora durante el fin de semana. No toqué la computadora en todo el fin de semana, ahora arranqué hoy y tengo un montón de errores de referencia:
(Hay 6,262 errores en total, pero obviamente no puedo hacer una captura de pantalla de todo).
Como dije, este tipo de problema ocurre muy a menudo, y es increíblemente frustrante. Cosas que he probado:
- Asegúrate de que todas las referencias que arrojan los errores sean referenciadas
- Des / reinstalar los paquetes lanzando los errores en NuGet
- Elimine por completo el contenido de la carpeta de
packages
y deje que NuGet los restaure (todos reinstalados, las vistas tienen los mismos errores que antes) - Asegúrese de que todas las referencias estén configuradas en
Copy Local
- Cierre la solución, elimine todas las carpetas
bin
yobj
, reinicie la computadora, limpie, reconstruya - Asegurado que todas las referencias necesarias estén en el
web.config
relevante (ya sea dentro deViews
o en la raíz) - Verifique la opción NuGet para restaurar los paquetes faltantes (no apareció, todos los paquetes están en mi carpeta de
packages
locales) - Otras cosas de modo que estoy seguro de que he olvidado enumerar aquí
Estoy al final de mi ingenio con estos paquetes y referencias. Es una solución diferente cada vez, y esta vez no puedo entenderlo. ¿Me estoy perdiendo alguna solución obvia, algo que pasé por alto? ¿Hay alguna manera de tomar una copia de seguridad cuando esto está funcionando y restaurarla cuando las cosas se rompen? Cualquier idea, ya sea que ayude con el problema actual o para solucionar el problema subyacente, será muy apreciada.
Nota adicional
El problema NO es solo con las vistas, los controladores también están arrojando errores. Específicamente:
No se pudo encontrar el tipo o el nombre de espacio de nombres ''Controlador'' (¿falta una directiva de uso o una referencia de ensamblado?)
(Literalmente dice Controller
, eso no es algo que haya cambiado por privacidad o lo que sea).
Estos se lanzan a pesar del hecho de que he using
sentencias para todos los espacios de nombres necesarios. Las propias declaraciones de using
funcionan correctamente, pero el error aparece en el código. La solución automática sugerida es hacer referencia a todo manualmente: por ejemplo, var sb = new StringBuilder();
quiere que cambie la línea a var sb = new System.Text.StringBuilder();
. La prueba de que la corrección no corrige el problema, se produce el mismo error pero en el System
lugar de StringBuilder
.
Información adicional solicitada
- Uso git con VS Team Services (pero los paquetes se ignoran con
.gitignore
). - Yo y otra persona trabajamos en esto, pero la otra persona no lo ha tocado en absoluto (ni siquiera halando el control remoto) en varias semanas.
- Las referencias en el archivo
.csproj
están en el formato../../../packages/
(correcto para la ubicación relativa al archivo.csproj
). - Targeting .NET 4.6 (siempre ha sido, eso no es nuevo)
- Todas las referencias se resuelven, sin signos de exclamación en la lista de referencias.
Proyectos nuevos
Hay una sola cosa que debes hacer para que los paquetes funcionen correctamente con git:
Cuando cree un repositorio, asegúrese de agregar un .gitignore adaptado para el desarrollo de Visual Studio. Puede buscar en Google un archivo de este tipo o tomarlo desde here .
Esto asegurará que no cometas nada que pueda causar problemas más adelante.
Esto debería resolver muchos de los problemas que suelen ocurrir al registrar paquetes en un repositorio de códigos. Puede agregar / eliminar paquetes y actualizar paquetes y también poder clonar el repositorio a una nueva máquina y los paquetes se restaurarán automáticamente.
Proyectos existentes
Esto es bueno para nuevos proyectos. Si ya tiene un proyecto con un gran problema, es muy difícil solucionarlo, ya que Visual Studio conserva las versiones de paquetes en varios lugares: packages.config y app.config (y web.config cuando sea relevante).
Opción 1 - arreglar el proyecto actual
Puede eliminar todos los paquetes (eliminar todas las referencias de todos los proyectos y eliminar el contenido del paquete).
Asegúrese de que los paquetes ya no aparezcan en ningún archivo (por ejemplo, packages.config o app.config). Ahora agregue .gitignore y luego vuelva a agregar los paquetes.
Opción 2 - Crear un nuevo proyecto
Si no funciona, inicie un nuevo proyecto, agregue el .gitignore, transfiera todo el código (solo su código) e instale los paquetes.
No estoy muy familiarizado con cómo funciona Git en VS, pero recuerdo una vez recientemente cuando usé TFS que desvincula la solución del control de origen, arregla todos los paquetes, limpia y reconstruye antes de volver a vincularlos. referencias
Pido disculpas si Git funciona de manera diferente dentro de VS.