web-dev-qa-db-fra.com

Visual Studio affichant des erreurs même si des projets sont générés

J'ai un problème avec Visual Studio sur une solution C #. Il affiche des erreurs totalement aléatoires, mais les projets se construisent. À l'heure actuelle, j'ai 33 fichiers avec des erreurs, et je peux voir des lignes ondulées rouges dans chacun d'eux.

J'ai essayé de nettoyer/reconstruire la solution, de fermer Visual Studio et même de redémarrer mon ordinateur. J'ai également veillé à suivre les étapes décrites dans Débogage, même avec les erreurs du compilateur dans Visual Studio. Je peux modifier les fichiers .cs et je vois les modifications apportées à la solution.

Quelqu'un at-il une idée de pourquoi il fait cela?

218
CydrickT

Si vous avez ReSharper, essayez de vider le cache ReSharper:

Dans le menu, ReSharper> Options> Environnement> Général> Effacer les caches

et désactiver et réactiver ReSharper:

Dans le menu, Outils> Options> ReSharper> Général> Suspendre/Restaurer

299
CydrickT

Nettoyer le cache de Resharper n'a pas aidé dans mon cas, essayé suspendre/restaurer , et aussi réparer Resharper, en utilisant le dernier téléchargement du site Web de JetBrains - aucun de ceux-ci n'a aidé. C’est après avoir essayé de fermer/rouvrir le VS, redémarrer ma machine, répéter, Construire/reconstruire et une combinaison de ceux-ci.

Il est intéressant de noter que suspendre Resharper semblait résoudre le problème après le redémarrage de 2nd de VS, mais c’était de retour après que j’ai activé Resharper <- j’ai essayé de faire cette séquence 2 à 3 fois pour assurer le schéma.

Quoi qu'il en soit, je trouvais toujours des problèmes lorsque j'ai trouvé cet article:

J'ai donc supprimé le fichier caché .SUO au même niveau de dossier avec la solution et, comme par magie, tous les rouges ont été résolus.

Remarque - Pour Visual Studio 2015, le fichier .SUO se trouve dans le dossier caché .vs/[nom_solution]/v14.

144
Neolisk

tldr; Déchargez et rechargez le projet problématique.

Quand cela m’arrive, j’essaie (jadis) d’essayer de fermer VS et de le rouvrir. Cela a probablement fonctionné environ la moitié du temps. Lorsque cela ne fonctionnait pas, je fermais la solution, supprimais le fichier .suo (ou le dossier .vs en entier), puis rouvrais la solution. Jusqu'à présent, cela a toujours fonctionné pour moi (plus de 10 fois au cours des 6 derniers mois), mais c'est un peu fastidieux car certaines choses sont réinitialisées, telles que votre mode de construction, votre projet de démarrage, etc.

Comme ce n'est généralement qu'un projet qui pose problème, j'ai juste essayé de décharger ce projet et de le recharger, et cela a fonctionné. Ma taille d’échantillon n’est que de 1, mais elle est beaucoup plus rapide que les deux autres options, ce qui en vaut peut-être la peine. Je suppose que cela fonctionne car il écrit dans le fichier .suo et corrige peut-être la partie corrompue qui était à l'origine du problème.

Remarque: cela semble fonctionner pour VS 2017 et 2015.

38
TTT

J'ai nettoyé la solution, fermé VS, rouvert, créé la solution et les lignes rouges non résolues ont été nettoyées et la construction a réussi.

33
pixel

J'ai constaté que cela se produisait fréquemment lors de l'utilisation de Git dans Visual Studio 2017, pour changer de branche lorsqu'il y a des modifications de code dépendantes . Même si le projet est construit avec succès, il restera des erreurs dans la liste des erreurs. 

Ces erreurs sont souvent des problèmes d'espace de noms et des références manquantes, même lorsque la référence à la bibliothèque existe.

Résoudre:

  • Fermer Visual Studio
  • Supprimez le fichier {sln-root} .vs\SlnName\v15.suo (masqué).
  • Redémarrer Visual Studio
18
Rebecca

J'ai eu un problème comme celui-ci où Intellisense ne semblait pas reconnaître l'existence d'un projet (beaucoup d'erreurs "ne trouve pas ce type", "cet espace de noms n'existe pas", etc.). 

Le fait de supprimer et de ré-ajouter la référence de projet dans tous les projets de référencement résoudrait le problème, mais la cause sous-jacente pourrait être résolue en modifiant le fichier .proj du projet en question.

Près du sommet du fichier .csproj du projet "manquant" se trouve un élément:

<ProjectGuid>{GUID}</ProjectGuid>

et dans tous les projets de référencement, les fichiers .csproj étaient des références de projet:

<ProjectReference Include="..\OffendingProject\OffendingProject.csproj">
  <Project>{ANOTHER-GUID}</Project>
  <Name>Offending Project</Name>
</ProjectReference>

La référence GUID ne correspond pas au GUID du projet. Remplacer {GUID} ci-dessus par {ANOTHER-GUID} a résolu le problème sans avoir à passer par tous les projets de référencement.

9
Philip C

J'ai essayé toutes les 6 options, rien n'a fonctionné pour moi. La solution ci-dessous a résolu mon problème. 

Fermez VS . Supprimez le dossier ".vs" caché en regard de votre fichier de solution . Redémarrez VS et chargez la solution.

5
suresh t

Supprimez le hidden chemin du fichier = votre solution \ .vs \ votre solution Nom \ v15\.suo

4
NoXSaeeD

pour VS-2017, la suppression du dossier .vs a fonctionné pour moi.

3
Romesh D. Niriella

Parfois, je dois effectuer un nettoyage personnalisé en parcourant tous les projets et en supprimant manuellement les dossiers "bin" et "obj". Pour les voir dans Visual Studio, vous devez activer les fichiers et dossiers cachés pour chaque projet. Une fois cela fait, reconstruisez la solution.

3
Technobabble

Peut-être que vous essayez de réinitialiser votre cache intellisense. J'ai eu un problème similaire dans Visual Studio 2012 lorsque je travaillais dans un projet volumineux comportant de nombreuses définitions de classe partielles . Réduire partiellement les partiels a partiellement résolu le problème, effaçant également le cache intellisense - pendant un certain temps.

2
Daniel Nachtrub

Voici une collection de réponses populaires. Upvote le PO de la réponse si cela vous a aidé:

Option 1: Nettoyer, compiler et actualiser ( @ Mike Fuchs option)

Comme @Mike Fuchs mentionné, essayez les opérations suivantes:

Dans le menu, Construire> Nettoyer la solution

Et

Dans le menu, Construire> Construire la solution

et sélectionnez le projet en question, puis cliquez sur le bouton d'actualisation:

 Refresh Button

Option 2: Nettoyer, Fermer, Redémarrer et Construire ( @Pixel option)

Comme mentionné dans @Pixel , essayez la séquence d'opérations suivante:

  1. Nettoyer la solution
  2. Fermer Visual Studio
  3. Ouvrir Visual Studio
  4. Construire la solution

Option 3: vider le cache ReSharper ( @CydrickT option)

Si vous avez ReSharper, essayez de vider le cache ReSharper:

Dans le menu, ReSharper> Options> Environnement> Général> Effacer les caches

et désactiver et réactiver ReSharper:

Dans le menu, Outils> Options> ReSharper> Général> Suspendre/Restaurer

Option 4: Supprimez le fichier .suo ( @Neolisk option)

Comme mentionné dans @Neolisk , la suppression du fichier .suo pourrait résoudre votre problème. Pour Visual Studio 2015, le fichier se trouve dans:

[Chemin de la solution] /. Vs/[Nom de la solution] /v14/.suo

Et pour Visual Studio 2017:

[Chemin de la solution] /. Vs/[Nom de la solution] /v15/.suo

Notez que le répertoire .vs est masqué.

Option 5: décharger et recharger le projet ( @TTT option)

Comme mentionné dans @TTT , essayez de décharger le projet qui pose problème:

Dans l'Explorateur de solutions, cliquez avec le bouton droit sur le projet, Décharger le projet.

Et le recharger

Dans l'Explorateur de solutions, cliquez avec le bouton droit sur le projet, Recharger le projet.

Option 6: Supprimer et ajouter une référence Microsoft.CSharp ( @Guilherme option)

Comme mentionné dans @Guilherme , essayez de supprimer et d’ajouter la référence à "Microsoft.CSharp" aux projets rencontrant des problèmes. 

Dans l'Explorateur de solutions, développez le projet, développez "Références", cliquez avec le bouton droit de la souris sur "Microsoft.CSharp" et supprimez. 

Ensuite, cliquez avec le bouton droit sur Références> Ajouter une référence, sélectionnez "Microsoft.CSharp" dans la liste, puis cliquez sur OK.

2
CydrickT

La solution suivante a fonctionné pour moi

1 - Fermer VS

2 - Supprimer le dossier .vs

3 - Ouvrir VS

4 - Solution de construction

2
Vijay Hugar
  1. d'abord fermer la solution.
  2. puis suppression du fichier de cache de la solution (à l'emplacement C:\Utilisateurs\Documents\Visual Studio\Fichiers de sauvegarde/fichier cache du projet)
  3. puis suppression du fichier .suo 
  4. puis solution ouverte et construire. 

J'espère résoudre votre problème 

1
Mahfuz Morshed

0 - Faites un clic droit sur la solution et nettoyez la solution

1 - Fermer VS 

2 - Supprimer le fichier .suo du projet

3 - Ouvrir VS

4 - Solution de construction

1
nPcomp

Après avoir essayé toutes les options énumérées, j'ai découvert une autre raison pour laquelle cela peut arriver. Si quelqu'un vous a envoyé le code source sous forme de fichier Zip ou si vous avez téléchargé un fichier Zip, Windows a peut-être bloqué tous les fichiers. 2 façons de résoudre ceci:

Méthode 1:

Faites un clic droit sur le fichier Zip d'origine -> Cochez 'Débloquer' -> Cliquez sur Appliquer

Méthode 2:

Si ce n'est pas une option, plutôt que d'ouvrir les propriétés de chaque fichier du dossier de solution, ouvrez simplement Power Shell et débloquez de manière récursive à l'aide des éléments suivants:

Get-ChildItem -Path 'C:\<ROOT FOLDER OF SOLUTION>\' -Recurse | Unblock-File
1
Conor Gallagher

Dans mon cas particulier, il s'agissait d'une référence de service qu'un autre développeur avait fusionné dans la branche principale. Ce qui était parfaitement correct sauf que la syntaxe en surbrillance n'a pas permis de résoudre la classe de service générée et que la source était entièrement soulignée en rouge. Nettoyer, reconstruire, redémarrer n'a rien fait. 

Tout ce que j'avais à faire, c'était d'actualiser la référence de service et VS a réussi à rassembler les éléments dans les coulisses. Aucune modification du code source ou des fichiers générés.

1

Décharger et recharger le projet a résolu ce problème.

1
Ankush Jain

Je viens de rencontrer ce problème après avoir annulé un commit git qui a ajouté des fichiers dans mon projet.

Le nettoyage et la reconstruction du projet n’ont pas fonctionné, même si j’ai fermé VS entre chaque étape.

Ce qui a finalement fonctionné a été de renommer le fichier en quelque chose d’autre et de le modifier à nouveau. : facepalm:

1
KidCode

dans mon cas, vs n'a jamais conservé les espaces de noms importés dans les propriétés du projet> références

quand j'ai essayé de les ajouter/vérifier à nouveau je ne pouvais pas et vs jeté une erreur et lorsque projet enregistré vs s'est écrasé. Quand j'ai rouvert tous les espaces de noms importés standard (system.data etc ...), ils ont tous été cochés à nouveau et ils ont alors tout reconnu sans erreur.

0
m butler

Un de mes collègues a connu ce problème aujourd'hui. Nous avons essayé beaucoup de recommandations ici et aucune n’a fonctionné à l’exception de la solution décrite ci-dessous.

Problème:

Le projet se construit bien, mais Intellisense ne reconnaît pas certains types et marque certaines instructions using comme non valides.

Solution:

Remplacez la 'Plateforme Solutions' (dans VS 2017, la liste déroulante située en regard de la liste déroulante Configuration de la solution. Elle contient des valeurs telles que x86, x64, AnyCPU, Plateformes mixtes, etc.) en AnyCPU

La plate-forme de votre projet peut varier, mais il semble que certaines références peuvent ne pas être valables pour toutes les plates-formes.

0
AperioOculus

Parfois, si vous nettoyez simplement la solution, les erreurs disparaissent, mais elles peuvent éventuellement revenir après un certain temps ou lors de la prochaine génération.

0
meJustAndrew

J'ai remarqué que, parfois, lors du changement de branche git, Visual Studio (2017) ne reconnaît pas les types de certains fichiers ajoutés dans la seconde branche. La suppression du dossier .vs le résout, mais elle supprime également tous les paramètres de votre espace de travail. Cette astuce semble bien fonctionner pour moi:

  1. Explorateur de solutions -> Recherchez le fichier contenant la classe non reconnue.
  2. Cliquez sur Afficher tous les fichiers en haut de l'explorateur de solutions.
  3. Cliquez avec le bouton droit sur le fichier -> Exclure du projet.
  4. Cliquez à nouveau avec le bouton droit sur le fichier -> Inclure dans le projet.

Cela amène Intellisense à analyser le fichier manquant lors du changement de branche.

0
Erik

Couru dans ce problème avec un seul type non reconnu par Visual Studio qui a montré le gribouillage rouge, même si la solution construite avec succès. J'ai remarqué que dans l'explorateur de solutions, le fichier ne contenait pas la flèche d'agrandissement à gauche qui indique les classes et les propriétés d'expansion.

Le correctif consistait à exclure le fichier du projet et à enregistrer/construire ce qui produisait une erreur attendue, puis à inclure le fichier dans le projet et à enregistrer et générer.

Après avoir exécuté ces étapes, Visual Studio a commencé à reconnaître à nouveau mon type. En regardant le diff dans git, il semble que le problème soit dû au fait que les fins de ligne ne correspondent pas sur la ligne <Compile Include="..." /> de mon fichier .csproj.

0
Thorb

Eu ce problème au travail (en cours d'exécution VS2017). J'ai essayé toutes les réponses ici. Pas de joie.

Le projet se construirait parfaitement, mais se plaignait que les espaces de noms/types étaient introuvables. Des gribouillis rouges partout. Beaucoup d'erreurs dans la fenêtre Liste d'erreurs.

Ma solution contenait 3 projets.

Découvert que 3 des références de la bibliothèque NuGet pour l'un des projets étaient décalées . Consolidation des versions de la bibliothèque référencée et Bingo.

J'espère que ça aide quelqu'un.

Brett.

0
Brett

J'ai constaté que cela pouvait arriver si le projet référencé visait une version du framework supérieure à celle du projet qui essayait de l'utiliser. Vous pouvez savoir s'il s'agit d'un problème en accédant à la fenêtre de sortie et en recherchant quelque chose de similaire à ceci: 

La référence principale "my_reference" n'a pas pu être résolue car elle a été construit sur le framework ".NETFramework, Version = v4.7.2". Ce est une version supérieure à celle du framework actuellement ciblé ".NETFramework, Version = v4.7".

La solution consiste à changer le cadre cible de l'un ou l'autre des projets.

0
michaela112358

TL; DR: Effectuer une nouvelle réinstallation de Visual Studio.

Après avoir perdu plusieurs heures, je ne pouvais toujours pas résoudre le problème pour Visual Studio 2017. J'ai ensuite installé Visual Studio 2019 PREVIEW et tout à coup, IntelliSense m'affiche à nouveau les membres des classes STL (ce qui n'est pas le cas avec Visual Studio 2017 ). 

Donc, je suppose qu'il y a peut-être aussi quelque chose qui ne va pas dans Visual Studio lui-même (peut-être quelque chose dans le répertoire de cache ou en général quelque chose sur votre PC qui n'est pas directement lié à une solution spécifique) qui peut être résolu par une résolution propre et complète. -installation de Visual Studio. Je sais que c'est une "solution" stupide, mais dans mon cas, seule une nouvelle installation de Visual Studio (2019) a eu un effet.

Comme je l'ai déjà mentionné, dans mon cas, seules les classes STL ont été affectées. IntelliSense n'afficherait pas leurs membres, ce qui est étrange. Je pensais que cela pourrait peut-être avoir quelque chose à voir avec les en-têtes précompilés. Quelque part, j’ai lu que le TSL et le projet devraient être sur le même lecteur et que les placer sur le même disque devrait résoudre le problème. Mais aucune de ces routes n’a conduit au succès.

0
j00hi