Visual Studio 2015 o 2017 muestra errores de IntelliSense pero compila la solución

122

Actualmente estamos evaluando el nuevo Visual Studio 2015 y encontramos un extraño problema con IntelliSense. Cuando compilé nuestra solución principal con el nuevo estudio, la compilación tuvo éxito, pero sin embargo, se muestran 6 errores.

Descubrí que no es un error real, sino solo un error inteligente. El código es definitivamente correcto y todo se compiló con éxito. Sin embargo, el código está marcado en rojo y los errores aparecen en la lista de errores.

Los 6 errores tienen el mismo origen. Es una simple llamada de constructor. Es bastante extraño, pero también hay algunas ocurrencias del mismo constructor sin ningún error.

El mensaje de error:

Code: CS1729
Message: '<the class>' does not contain a constructor that takes that many arguments.
Project: <the project name>
File: <the path to the file>

El nuevo estudio se instaló en un Windows 7 recién instalado sin ningún software heredado (no VS13).

Ya he intentado borrar los cachés, eliminé el archivo suo, eliminé los directorios bin y obj, limpié y reconstruí la solución, etc. Pero nada funcionó.

¿Alguien puede explicarme ese comportamiento?

Ceniza
fuente
2
El analizador utilizado por intellisense no es el mismo que el compilador utilizado para compilar el código.
relajarse
1
Esto también sucede en VS 2013. Podría ser que VS aún no haya terminado de indexar todo el código base. Si se compila y funciona como se espera, no le prestaré atención.
Código diferente
2
@chill En VS2015 debería ser el mismo analizador, parte de Roslyn.
Lasse V. Karlsen
1
¿Puedes crear un pequeño proyecto que reproduzca el problema? Si es así, ¿puedes publicar el código?
Lasse V. Karlsen
¿La clase es parcial o alguna parte de ella se genera en tiempo de compilación?
Panagiotis Kanavos

Respuestas:

58

También tuve este problema con un proyecto migrado, así que hice referencia al archivo dll Microsoft.CSharp. En algunos proyectos, necesitaba eliminar y agregar nuevamente la Referencia en el proyecto.

Guilherme de Jesus Santos
fuente
3
Tuve que hacer esto cuando un miembro del equipo agregó un nuevo proyecto a la solución y migró algunos archivos cs de un proyecto existente al nuevo. Cuando llegué más reciente, vi muchos errores pero pude compilar y ejecutar. Dejar y volver a agregar la referencia al nuevo proyecto del proyecto ofendido funcionó para mí.
Bill
1
Exactamente la misma situación que Bill describió nos sucedió. Algunas clases fueron trasladadas a un nuevo proyecto. Parece que Visual Studio no actualizó su caché Intellisense cuando se importó una nueva referencia de proyecto desde el control de origen. Volver a ingresar la referencia manualmente forzó a VS a hacerlo.
Peter Macej
2
La solución se compila, pero muestra errores ondulados en algunos archivos. No se muestran errores en "Release", solo en Debug. Se eliminó Microsoft.CSharp y los errores desaparecieron, ¡gracias!
Michael
@ Michael Gracias por ese consejo. Tengo exactamente el mismo problema. Sin errores en la versión, pero muchos errores en la depuración.
user2061057
Si la clase mencionada es su propio código, puede excluir e incluir el archivo que contiene la clase. Debería activar VS para actualizar IntelliSense. #awfulbug
David S.
198

Tuve miles de errores intellisense y 0 errores de compilación. Después de eliminar el .suoarchivo y reiniciar VS, los errores intellisense desaparecen.

Suo el archivo se encuentra relativamente a la fuente en: .vs\SolutionName\v14\.suo

Según el comentario: Cuidado con que *.suoes un archivo oculto.

Editar: según los comentarios, VS2017 tiene el mismo problema, por lo que puede usar una solución similar: Eliminar.vs\SolutionName\v15\.suo

Karel Kral
fuente
77
Solo una nota: los *.suoarchivos pueden estar ocultos en algunos casos. Por lo tanto, debe habilitar la View Hidden filesopción del explorador de Windows.
Athafoud
66
Matar el .suo no tuvo ningún efecto para mí, pero eliminar el directorio bin y obj y luego reconstruir la solución lo hizo.
Holger Böhnke
Eliminar el archivo .suo no resolvió el problema para mí (en VS2015) Estoy obteniendo el espurio rojo ondulado en JavaScript que hace referencia a las propiedades del código subyacente: <%=Foo%>decir que la variable no está declarada, pero todo funciona en tiempo de ejecución.
Tim
No estoy 100% seguro, pero esto también podría haber reparado los errores de marcado no válidos que recibía con XAML
Geordie
encontrar . -name "* suo" -exec rm -rf {} \;
Derek Greer
20

Se encontró con un problema similar en Visual Studio 2017 ASP.Net Core Project. Los siguientes pasos me ayudaron

  1. Realizar una solución limpia
  2. Cerrar VS
  3. Eliminar el archivo .suo y eliminar los directorios bin / obj
  4. Reabrir VS
Naren
fuente
1
Esto funciona pero es algo tedioso que hacer de vez en cuando. Siempre tengo este problema cuando construyo en modo de lanzamiento. Extraño VS no puede resolverlo por sí mismo.
nawfal
12

Problema similar a otros, pero diferente resolución. Publicar en caso de que pueda ayudar a alguien más.

Ejecución de Visual Studio 2017 15.5.2. Yo uso Git y con frecuencia cambio de ramas. Hace varias semanas, comencé a hacer que los editores me mostraran errores (todos relacionados con tipos que no podía encontrar a pesar de que las referencias eran válidas). Compilar funcionó muy bien. Confirmé el mismo problema en VS 2017 15.6 Preview (6 de enero de 2018). Intentaría eliminar la memoria caché, los archivos SUO o las carpetas bin / obj sin ningún impacto. Al principio parecería funcionar. Vuelva a abrir Visual Studio y todo se vería bien. Utilice "Reconstruir solución" y los errores de IntelliSense volverían. Incluso intenté desinstalar / reinstalar Visual Studio.

Tuve el mismo problema en dos máquinas, ambas con la misma versión de Visual Studio.

Al observar los errores sobre los tipos faltantes, todos parecían provenir de dos proyectos referenciados. Una de esas referencias era un proyecto compartido utilizado por casi cualquier otro proyecto en la solución, pero uno de ellos era un proyecto pequeño sin muchas referencias. Sucede que el proyecto pequeño también fue referenciado por mi proyecto compartido más grande. En Visual Studio, descargué el pequeño proyecto y lo volví a cargar. Los errores se fueron! Los errores no volvieron en Reconstruir solución.

Luego cambié las ramas de Git y todos los errores volvieron. Afortunadamente, repetí los pasos anteriores de descarga / recarga del pequeño proyecto y los errores desaparecieron.

Cada vez que cambio las ramas de Git, los errores regresan hasta que repito ese proceso. Hay cero cambios entre las ramas de Git para el proyecto más pequeño que descargo / recargo. No está claro por qué esa secuencia está solucionando mi problema.

HgCoder
fuente
Basado en esto, descargué tres proyectos relacionados con "Prueba" o "Arquitectura", luego descargué y volví a cargar el proyecto lleno de errores Intellisense (WPF). 0 de 0 errores :) +1 por los detalles discretos que me llevaron a probar algo similar a usted HgCoder!
Steven_BDawg
Uso de VS 2017 15.9.9. Usando Git. Usando R #. Regularmente también cambio de ramas. Mis errores son de hecho todos IntelliSense. Noto que la descarga del proyecto hace que la columna "Proyecto" (en la pestaña Lista de errores) vaya a <Desconocido>. Entonces, parece estar pateándolo un poco. La descarga de proyectos también parece haber funcionado para mí. Una solución limpia + solución de reconstrucción finalmente produjo 0 errores.
dthal
7

También tuve este problema (el título, no el mensaje de error específico), así como líneas onduladas en el editor. La primera línea ondulada está debajo de la primera #includeinstrucción, que nombra un encabezado precompilado. Intellisense no puede incluir el encabezado precompilado, pero no lo enumera como un error; en su lugar, enumera los errores más abajo en el archivo, en un código que (con mucha razón) se basa en declaraciones en el encabezado precompilado.

La razón por la que Intellisense no encuentra el encabezado precompilado en mi entorno es porque el encabezado nombrado no es un archivo real. No tiene que estar en ninguna otra versión de VC o gcc que use, ni en el compilador de 2015, siempre que la configuración del encabezado precompilado esté configurada correctamente. Aparentemente ya no es para Intellisense. No estoy completamente seguro de que fuera diferente en 2013, tal vez nunca lo noté.

En el caso poco probable de que este sea el problema que se informa aquí, la solución es simple: cree un pequeño archivo con el nombre simulado del encabezado precompilado, como se especifica en las #includedirectivas, y deje que ese archivo incluya el nombre real del encabezado precompilado.

Si se pregunta ... ¿por qué esta distinción entre el nombre del encabezado precompilado en la instrucción '#include' y el nombre de archivo real del encabezado precompilado? Precisamente porque garantiza que la configuración del encabezado precompilado está configurada correctamente. Donde sea que un encabezado precompilado esté "#incluido", no se puede incluir ningún archivo. Se lee una versión realmente precompilada (binaria) del encabezado real o la compilación falla. Obviamente, una desventaja es que confunde personas que leen el código, no solo a Intellisense.

Stein
fuente
2

Visual Studio 2017 He eliminado el archivo ".suo" de la ubicación .vs \ SolutionName \ v15.suo Y luego reinicié Visual studio. Esto funcionó para mí.

Saurabh Raoot
fuente
2

Hoy he tenido un problema similar con MSVC ++ 2015. Casi me doy por vencido y decidí continuar sin sugerencias de IDE, pero de repente me di cuenta de que stdafx.h del proyecto con el que tuve problemas no contiene ningún encabezado de biblioteca estándar. He especulado que la inclusión de todos los encabezados estándar utilizados en el proyecto en stdafx.h podría aumentar la velocidad de compilación, pero al hacerlo también se corrigieron los errores de Intellisense.

Amenaza menor
fuente
1

Tuve múltiples stdfax.hen directorios de inclusión adicionales. Asegúrese de que lo stdafx.hque pretendía sea el primero en su camino.


fuente
1

Tuve un problema similar con diferentes versiones de Visual Studio.

Eliminar la carpeta .suo o .vs no me ayudó.

La solución para mí fue que tenía la extensión StopOnFirstBuildError activa. Después de desactivar "Detener compilación en el primer error" en el menú de compilación, y después de que la solución se compila por completo, los errores mostrados por Intellisense desaparecieron.

Fabian
fuente
1

Estaba viendo los errores de intellisearch solo cuando publicaba un sitio web. (Sitio ASP / C #, VS 2017). Rompieron la publicación. El sitio funcionó bien localmente.

Borró los errores desmarcando la configuración para precompilar, y se publicó bien. Publicar -> Configuración -> Opciones de publicación de archivos -> Precompilar durante la publicación

Rahn
fuente
1

En Visual Studio 2019, el problema es cambiar ramas con Git cuando hay paquetes NuGet instalados en el proyecto. Lo que hice para resolver esto:

  1. Solución limpia
  2. Cerrar Visual Studio
  3. Eliminar la carpeta de paquetes
  4. Abra Visual Studio
  5. Ir al administrador de paquetes
  6. Restaurar todos los paquetes
  7. Recompilar
  8. Si falta Roslyn, cierre y abra Visual Studio, luego vuelva a compilar.
Daniel Lobo
fuente