web-dev-qa-db-fra.com

Visual Studio 2015 ou 2017 affiche les erreurs IntelliSense mais la solution est compilée

Nous évaluons actuellement le nouveau Visual Studio 2015 et avons rencontré un problème étrange avec IntelliSense. Lorsque j'ai compilé notre solution principale avec le nouveau studio, la construction a réussi, mais néanmoins 6 erreurs sont affichées. 

J'ai découvert que ce n'est pas une erreur réelle, mais seulement une erreur intellisense. Le code est définitivement correct et tout a été compilé avec succès. Le code est cependant marqué en rouge et les erreurs apparaissent dans la liste des erreurs.

Les 6 erreurs ont toutes la même origine. C'est un simple appel de constructeur. C'est assez étrange, mais il y a aussi des occurrences du même constructeur sans aucune erreur.

Le message d'erreur:

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>

Le nouveau studio a été installé sur un Windows 7 fraîchement installé sans aucun logiciel hérité (pas de VS13).

J'ai déjà essayé d'effacer les caches, supprimé le fichier suo, supprimé les répertoires bin et obj, nettoyé et reconstruit la solution, etc. Mais rien n'a fonctionné.

Quelqu'un peut-il m'expliquer ce comportement?

101
Ash

Également eu ce problème avec un projet migré, donc j'ai référencé la dll Microsoft.CSharp. Dans certains projets, j'avais besoin de supprimer et d'ajouter à nouveau la référence dans le projet.

46

J'ai eu des milliers d'erreurs intellisense et 0 erreurs de construction. Après la suppression du fichier .suo et le redémarrage de VS intellisense, les erreurs ont disparu.

Le fichier Suo est situé par rapport à la source dans: .vs\SolutionName\v14\.suo 

Selon le commentaire: Attention, *.suo est un fichier caché.

Edit: Selon les commentaires, VS2017 a le même problème, vous pouvez donc utiliser une solution similaire: Supprimer .vs\SolutionName\v15\.suo 

172
Karel Kral

Problème similaire rencontré dans Visual Studio 2017 ASP.Net Core Project. Suivre les étapes a fait le tour pour moi

  1. Effectuer une solution propre
  2. Fermer VS
  3. Supprimer le fichier .suo et supprimer les répertoires bin/obj
  4. Rouvrir VS
16
Naren

Problème similaire aux autres, mais résolution différente. Publier au cas où je pourrais aider quelqu'un d'autre.

Exécution de Visual Studio 2017 15.5.2. J'utilise Git et change souvent de branche. Il y a plusieurs semaines, j'ai commencé à avoir des éditeurs qui me signalaient des erreurs (toutes liées aux types qu'il ne pouvait pas trouver même si les références étaient valides). Compiler a bien fonctionné. J'ai confirmé le même problème dans VS 2017 15.6 Preview (6 janvier 2018). Je voudrais essayer de supprimer le cache, les fichiers SUO, ou les dossiers bin/obj et aucun impact. Au début, il semblerait que cela fonctionne. Rouvrez Visual Studio et tout irait bien. Utilisez "Rebuild Solution" et les erreurs IntelliSense seraient renvoyées. J'ai même essayé de désinstaller/réinstaller Visual Studio.

J'ai eu le même problème sur deux ordinateurs, les deux avec la même version de Visual Studio.

En examinant les erreurs concernant les types manquants, elles semblent toutes provenir de deux projets référencés. L'une de ces références était un projet partagé utilisé par presque tous les autres projets de la solution, mais l'un d'entre eux était un petit projet sans nombreuses références. Il se trouve que le petit projet a également été référencé par mon plus grand projet partagé. Dans Visual Studio, j'ai déchargé le petit projet et l'ai rechargé. Les erreurs sont partis! Les erreurs ne sont pas revenues sur Rebuild Solution.

J'ai ensuite changé de branche Git et toutes les erreurs sont revenues. Heureusement, j'ai répété les étapes ci-dessus de déchargement/rechargement du petit projet et les erreurs ont disparu.

Chaque fois que je change de branche Git, les erreurs se reproduisent jusqu'à ce que je répète ce processus. Il n'y a aucun changement entre les branches Git pour le projet plus petit que je décharge/recharge. Vous ne savez pas pourquoi cette séquence résout mon problème.

8
HgCoder

Aussi eu ce problème (le titre, pas le message d'erreur spécifique), ainsi que des lignes ondulées dans l'éditeur. La première ligne ondulée se trouve sous la première instruction #include, qui nomme un en-tête précompilé. Intellisense ne parvient pas à inclure l'en-tête précompilé, mais ne le répertorie pas comme une erreur. au lieu de cela, il liste les erreurs plus loin dans le fichier, sur un code qui repose (à juste titre) sur des déclarations dans l'en-tête précompilé.

Si Intellisense ne trouve pas l'en-tête précompilé dans mon environnement, c'est parce que l'en-tête nommé n'est pas un fichier réel. Il ne doit pas nécessairement figurer dans une autre version VC ou gcc que j'ai utilisée, ni dans le compilateur 2015, tant que les paramètres de l'en-tête précompilé sont correctement configurés. Apparemment plus pour Intellisense. Je ne suis pas tout à fait sûr que c'était différent en 2013, peut-être que je ne l'ai jamais remarqué.

Dans le cas improbable où il s'agirait du problème signalé ici, la solution est simple: créez un petit fichier avec le faux nom de l'en-tête précompilé, comme spécifié dans les directives #include, et laissez ce fichier inclure le nom réel de l'en-tête précompilé .

Si vous vous demandez ... pourquoi cette distinction entre le nom de l'en-tête précompilé dans l'instruction '#include' et le nom de fichier de l'en-tête précompilé? C'est précisément parce que cela garantit que les paramètres d'en-tête précompilés sont correctement configurés. Chaque fois qu'un en-tête précompilé est "#included", aucun fichier ne peut être inclus. Une version réellement précompilée (binaire) de l'en-tête est lue ou la compilation échoue. De toute évidence, l’inconvénient est que cela confond people en lisant le code, pas seulement Intellisense.

6
Stein

Visual Studio 2017 J'ai supprimé le fichier ".suo" de l'emplacement .vs\SolutionName\v15.suo Puis j'ai redémarré Visual studio. Cela a fonctionné pour moi.

2
Saurabh Raoot

Aujourd'hui, j'ai un problème similaire avec MSVC++ 2015. J'ai failli abandonner et j'ai décidé de continuer sans IDE astuces, mais j'ai parfois remarqué que stdafx.h du sous-projet avec lequel j'avais des problèmes en-têtes de bibliothèque standard. J'ai suggéré que cela pourrait ralentir la compilation du module, mais l'inclusion des en-têtes standard corrigeait également Intellisense.

0
Minor Threat

Je voyais les erreurs intellisearch uniquement lors de la publication d'un site Web. (Site ASP/C #, VS 2017). Ils ont cassé la publication. Le site fonctionnait bien localement.

Supprimez les erreurs en décochant le paramètre pour la pré-compilation, et la publication est correcte . Publier -> Paramètre -> Options de publication de fichier -> Précompiler pendant la publication

0
Rahn

J'ai eu un problème similaire avec différentes versions de Visual Studio.

Supprimer le dossier .suo ou .vs ne m'a pas aidé.

La solution pour moi était que l'extension StopOnFirstBuildError était active. Après avoir désactivé l'option "Stop build on first error" dans le menu de génération et une fois la solution entièrement construite, les erreurs affichées par Intellisense ont disparu.

0
Fabian

J'ai eu plusieurs stdfax.h dans des répertoires d'inclusion supplémentaires. Assurez-vous que le stdafx.h que vous souhaitez est en premier dans votre chemin.

0
slater