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?
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
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.
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.
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.
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:
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.
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.
Supprimez le hidden chemin du fichier = votre solution \ .vs \ votre solution Nom \ v15\.suo
pour VS-2017, la suppression du dossier .vs a fonctionné pour moi.
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.
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.
Voici une collection de réponses populaires. Upvote le PO de la réponse si cela vous a aidé:
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:
Comme mentionné dans @Pixel , essayez la séquence d'opérations suivante:
- Nettoyer la solution
- Fermer Visual Studio
- Ouvrir Visual Studio
- Construire la solution
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
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é.
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.
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.
La solution suivante a fonctionné pour moi
1 - Fermer VS
2 - Supprimer le dossier .vs
3 - Ouvrir VS
4 - Solution de construction
J'espère résoudre votre problème
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
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
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.
Décharger et recharger le projet a résolu ce problème.
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:
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.
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.
Le projet se construit bien, mais Intellisense ne reconnaît pas certains types et marque certaines instructions using
comme non valides.
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.
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.
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:
Cela amène Intellisense à analyser le fichier manquant lors du changement de branche.
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.
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.
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.
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.