web-dev-qa-db-fra.com

Aller à la définition: "Impossible de naviguer vers le symbole situé sous le curseur."

J'ai soudainement commencé à rencontrer un problème aujourd'hui dans mon projet où cliquer sur Aller à la définition me donnait une étrange erreur: "Je ne peux pas accéder au symbole situé sous le curseur".

enter image description here

Je l'ai remarqué pour la première fois quelque temps après avoir installé Costura.Fody via NuGet. Je l'ai depuis désinstallé mais le problème persiste. J'ai nettoyé et reconstruit la solution plusieurs fois. Il n'y a pas d'exemples de "Fody" ou de "Costura" dans mon historique de commit git, avant ou après le moment où cela a commencé, alors je pense qu'un de mes fichiers .gitignore est bloqué dans un mauvais dossier. Etat.

Le problème ne se produit que si la définition visée est dans un autre fichier. Aller à la définition pour quelque chose dans le fichier actuellement ouvert fonctionne bien. Peek Definition fonctionne bien aussi. D’autres solutions/projets fonctionnent également bien - c’est seulement celui-ci qui pose problème.

J'utilise Visual Studio 2015. Le problème ne semble pas se produire dans la version 2013.

Pourquoi cette erreur se produit-elle et comment puis-je la réparer?

65
Jeff E

Ces derniers jours, j'ai eu cette erreur, au moins deux fois par jour .. vraiment ennuyeux! Aucune des solutions proposées ici n'a fonctionné pour moi. Ce que j'ai trouvé, et comme c'était assez difficile à trouver, je l'écris ici, c'est:

  • Fermer le visuel
  • Ouvrez la console et accédez au dossier d'installation Visual, sur mon ordinateur se trouve C:\Program Files (x 86)\Microsoft Visual Studio 14.0\Common7\IDE.
  • lancer devenv.exe/resetuserdata
  • Ouvrez Visual Studio, cela va prendre du temps à charger.

Disclaimer: J'utilise Xamarin

PRENEZ EN CONSIDÉRATION CE QUE @OzSolomon et @xCasper ont déclaré:

@OzSolomon

Sachez que cela réinitialisera bon nombre de vos personnalisations IDE, y compris les plugins installés.

Assurez-vous que vous êtes à l'aise avec cela avant d'utiliser/resetuserdata

@xCasper

Si vos paramètres sont synchronisés via Microsoft, toutefois, la plupart des préférences semblent se restaurer elles-mêmes. Je dis le plus parce qu'il semble que mes raccourcis clavier n'ont pas été restaurés et sont redevenus par défaut. Tout le reste, tel que mon choix de thème et de colorisation, la disposition de mon IDE (où j'ai des onglets par exemple) et tout ce qui semble ne pas revenir.

64
fabricio

J'ai le même problème. J'ai fait toutes les étapes mentionnées dans tous les commentaires ci-dessus. Ça n'a pas marché. Mais lorsque j'ai fermé Visual Studio, le dossier ".vs" supprimé (dans le dossier de la solution) a ensuite rouvert Visual Studio. Cela fonctionne maintenant comme un charme. Le problème est parti.

95
Anthony

J'ai essayé la solution de David (celle qui consiste à cliquer sur l'option Vider le symbole symbole), mais cela n'a pas fonctionné pour moi.

Comment l'ai-je résolu?

  • Fermer tous les fichiers
  • Solution propre
  • Reconstruire la solution

Pour moi, cette erreur n’a pas de sens, mais j’ai résolu le problème!

48
joalcego

Je viens d'avoir le même problème et il semble qu'il y ait un problème avec VS 2015 et TFS. J'ai eu le problème après avoir fusionné certains fichiers dans une autre branche. J'ai essayé plusieurs choses et cela a fonctionné:

  • Fermez tous les fichiers ouverts, puis VS
  • Outils-> Options-> Débogage-> Symboles-> Cache de symboles vide
  • TFS Check in et obtenir le dernier (Pour une raison quelconque, cela a fonctionné après cela)

Je ne sais pas pourquoi cela se produit, mais cela a fonctionné pour moi. Cela vaut également la peine d'effacer le dossier TFSTemp comme mentionné par zvi.

EDIT

Ce chemin: %TMP%\TFSTemp peut être copié-collé dans l’explorateur Windows pour accéder à TFS temp.

35
David

Ce qui suit a résolu ceci pour moi:

  • Dans l'Explorateur de solutions, cliquez avec le bouton droit sur le nom de la solution.
  • Sélectionnez "Clean Solution"

Une fois cette opération terminée avec succès, je n’ai plus reçu l’erreur et je n’ai rien eu à fermer ni à rouvrir.

18
Chris Szalaj

Simplement fais-le:

  • Fermer Visual Studio
  • Allez dans le dossier du projet et supprimez le fichier .user (peut être caché)
  • Ouvrir Visual Studio
9
Helper

Nettoyez vos symboles de cache (Outils> Options> Débogage> Symboles> EmptySymbolCache). Ouvrez votre solution en mode administratif.

cela a résolu mon problème.

6
user3724031

La réponse ci-dessus est correcte, mais le chemin est légèrement désactivé, essayez plutôt ceci:

%AppData%\..\Local\Temp\TFSTemp
5
user2386254

J'ai fait toutes les choses ci-dessus mais mon problème n'a pas résolu (essayer d'ouvrir le projet avant VS 2017),

après cela, j'ai réalisé que le problème était mon fichier csproj. Mon projet (mvc)

a été créé par VS 2015 ... Je modifie donc mon fichier csproj et le remplace

<Import Project="..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.0\build\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props" Condition="Exists('..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.0\build\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props')" />

par ça :

<Import Project="..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.7\build\net45\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props" Condition="Exists('..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.7\build\net45\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props')" />

Tout était à propos de la version de DotNetCompilerPlatform.

(D'après ce que j'ai compris, j'ai créé le nouveau projet mvc par VS 2017 et comparé les deux fichiers csproj - le nouveau et celui créé par VS 2015 -)


Informations connexes supplémentaires par https://stackoverflow.com/users/15667/xan (puisque les réponses sont verrouillées)

Pour moi (VS2019 ouvrant une ancienne solution), cela n’affectait que un projet dans la solution. Les importations ressemblaient à ceci:

<Import Project="..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.0\build\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props" Condition="Exists('..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.0\build\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props')" />
<Import Project="..\packages\Microsoft.Net.Compilers.1.0.0\build\Microsoft.Net.Compilers.props" Condition="Exists('..\packages\Microsoft.Net.Compilers.1.0.0\build\Microsoft.Net.Compilers.props')" />
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />

Les projets de travail avaient seulement la

<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />

ligne, alors j'ai supprimé les 2 premiers et intelisense/aller à la définition, etc. a commencé à fonctionner à nouveau.

TOUTEFOIS le projet Web ne s'exécute pas à cause du compilateur Roslyn csc manquant.

En fin de compte, la solution globale était de mettre à jour les packages Microsoft.CodeDom.Providers.DotNetCompilerPlatform et Microsoft.Net.Compilers Nuget du projet.

4
Mr. Galouz Lee

Couru dans ce problème en utilisant F12 pour essayer d'aller à une définition de méthode.

Tous les éléments mentionnés (à l'exception du /resetuserdata - que je n'ai pas essayé car il serait difficile de récupérer) - ne fonctionnaient pas.

Qu'est-ce qui a fonctionné pour moi?

  • Quitter Visual Studio
  • A partir d'une invite de commande, accédez au dossier de votre solution et exécutez le code suivant (cela supprime TOUS les dossiers bin et obj de votre solution):

    FOR /F "tokens=*" %%G IN ('DIR /B /AD /S bin') DO RMDIR /S /Q "%%G"
    FOR /F "tokens=*" %%G IN ('DIR /B /AD /S obj') DO RMDIR /S /Q "%%G"
    
  • Redémarrez Visual Studio. L'ouverture de la solution devrait prendre un peu plus de temps car elle reconstruit maintenant les dossiers obj.

Après avoir fait cela F12 a fonctionné!

En remarque, je le place normalement dans un fichier de commandes dans le dossier de ma solution, à côté du fichier .sln. Cela facilite l'exécution plus tard!

4
TheHUTMan

Fermez Visual Studio, puis supprimez le nom de fichier caché .vs de ce projet et ouvrez à nouveau Visual Studio, puis générez le projet. Boom! Tout bon!

3
EzeeykiL

J'ai le même problème après la mise à jour de Visual Studio, voici donc comment résoudre le problème.

  1. Fermer studio visuel.
  2. Supprimer tous les dossiers .vs de mon projet.
  3. Studio visuel ouvert.
  4. Ouvrez mon projet.

J'espère que cela sera utile pour tous ceux qui ont ce problème.

3
wut-excel

Récemment mis à niveau à VS 2017 15.5.0 et rencontré ce problème. J'ai essayé:

  1. Suppression du cache de symboles
  2. Suppression de mon dossier .vs.
  3. Solution de reconstruction.
  4. Lancer devenv/resetuserdata

Malheureusement, rien de tout cela n'a fonctionné. J'ai remarqué que cela ne se produisait que sur certains projets et pas sur d'autres. Sur le projet où il échouait, j'ai basculé toutes les versions de la structure vers la version 4.7.1, procédé à un nettoyage/reconstruction et mon "Aller à la définition" a recommencé à fonctionner.

3
billb

La plupart des chemins proposés par d'autres ne fonctionnent pas ou sont un peu en arrière.

Videz ce dossier:

%localappdata%\Temp\TFSTemp

Cela a fonctionné pour moi.

1
Mohannad

Je dirais que cela est dû au nouveau compilateur Roslyn C #. Dans son traqueur de problèmes github, vous pouvez trouver de nombreux développeurs rencontrant ce problème et essayant de le réparer, mais il est toujours ouvert: https://github.com/dotnet/roslyn/issues/9602

J'ai passé un peu de temps là-dessus également et j'ai perdu la bataille. Mais la solution suivante que j'ai trouvée fonctionne bien pour moi.

SOLUTION DE CONTOURNEMENT

  1. Modifiez le raccourci clavier F12 -> Éditer.FindAllReferences (pour TextEditor). Cela trouvera la définition et toutes les références et mettra en évidence le nœud racine (définition) dans les résultats de recherche de symbole.
  2. En appuyant maintenant sur F12, ENTER fera la même chose que F12 auparavant.

Pour moi, cela semble fonctionner encore mieux que juste GoToDefinition, parce que:

  • Après avoir appuyé sur F12, vous pouvez choisir une référence au lieu de la définition en appuyant sur UP ou DOWN
  • Vous pouvez simplement faire défiler les références et les définitions avec ces quelques touches (F12, ENTRÉE, HAUT, BAS), faciles à mémoriser.
1
LubosTomsa

Après avoir lu que ce problème particulier avait été résolu dans le compilateur roslyn ( voir ce problème sur GitHub ), j'ai mis à jour Visual Studio . de la version 15.0.x à 15.3.1. Cela fonctionne comme un charme maintenant.

0
Franz Wimmer

Pour moi, la navigation ne fonctionne que sans solutions XAMARIN. Les suggestions ici NE FONCTIONNENT PAS. :( Devenv.exe/resetuserdata ne fonctionne pas pour moi.

Ma solution était la suivante: recréer les solutions, le projet, les dossiers et les travaux. Aucune importation. Détail: mon projet portait sur le VS 2015, l'erreur sur le VS 2017.

0
Voumir
  1. Vérifiez les espaces de noms des deux classes.
  2. Si vous ajoutez des classes dans la bibliothèque de classes - Assurez-vous d'utiliser le bon type de projet. Il existe deux types de bibliothèques de classes. Bibliothèque de classes (package) et bibliothèque de classes. (Sélectionnez le dernier car il crée un fichier .dll) qui peut ensuite être ajouté si nécessaire dans d'autres solutions.
0
Dev

J'ai eu cette erreur pendant un certain temps maintenant jusqu'à ce que je ne puisse plus la supporter, alors j'ai essayé toutes les solutions possibles ci-dessus, mais aucune n'a fonctionné pour moi. J'ai remarqué que l'erreur n'apparaissait que sur un certain projet (comme ce qu'un utilisateur a mentionné ci-dessus), mais pas sur d'autres projets. À cause de cela, comme rien ne fonctionne, j'ai à nouveau cloné mon projet sur un dossier différent et il a recommencé à fonctionner.

0
user742102

Après avoir effectué "devenv.exe/resetuserdata", mon VAssistX échoue. En fait, cela me rappelle que VAssistX peut résoudre le problème en mettant en œuvre Goto Implementation (Alt + G).

0
macrod

Ce qui suit a fonctionné pour moi comme un charme:

  1. J'ai vérifié les avertissements apparus lors de la construction du projet
  2. Certains d'entre eux ont mentionné quelque chose à propos du conflit de version de l'Assemblée. Visual studio m'a suggéré de cliquer sur l'avertissement et d'appuyer sur Entrée. Une fenêtre contextuelle a proposé de résoudre automatiquement le problème et c'est ce que j'ai fait.
  3. Problème résolu!
0
Charalabos

Si vous avez récemment installé un complément, envisagez de le désinstaller. C'est ce qui a fonctionné pour moi.

0
tstuts

essayez de nettoyer la solution ou nettoyez votre projet, cela a fonctionné pour moi

0

Je suis aussi tombé sur cette fois. Il y a quelque chose qui ne va pas avec TFS dans VS 2015.

J'ai suivi ces étapes et cela a fonctionné

  1. Cache TFS effacé Ceci pourrait être ici:

    C:\Utilisateurs\(Nom d'utilisateur)\AppData\Local\Microsoft\Fondation de l'équipe\(Version)\Cache

Remarque: le chemin peut varier en fonction du système d'exploitation, alors ne m'en voulez pas.

  1. Cache de symboles vide

    Outils> Options> Débogage> Symboles> EmptySymbolCache

  2. Visual Studio redémarré (il se peut que vous souhaitiez à nouveau vous connecter à TFS)

Cela a fonctionné pour moi :)

0
Maulik Modi

Ce bogue étrange m'est arrivé lors de l'importation d'un projet Xamarin dans VS15. Aucune des solutions énumérées ici ne fonctionnait pour moi. Après une journée de frustration, j’ai également rencontré un problème similaire à celui-ci: "Visualiser" dans Visual Studio entraîne "Aucun fichier n’a été trouvé. Recherche a progressé."

Lorsque vous cliquez sur "Tout trouver" dans la boîte de dialogue de recherche, une fenêtre contextuelle m'informe que les autres fichiers ne peuvent pas être recherchés. J'ai donc pensé que la raison pour laquelle "aller à la définition" ne fonctionnait pas était due au même bogue, car la recherche de définitions dans le même fichier fonctionnait.

la solution étrange dans le lien ci-dessus (en appuyant sur Ctrl + Verrou défilement ou Ctrl + Pause plusieurs fois) a résolu les deux problèmes pour moi.

La coloration du code (qui ne fonctionnait pas lorsque la fonctionnalité "Aller à la définition" a été interrompue) est également immédiatement revenue.

0
Jake Walden

Solution propre. Restaurer les paquets de nuget.

0
ziaprog

Mon problème était que j'ai (semi-accidentellement) changé la propriété Build action du fichier .cs problématique en Content. Remettre à Compile a fait le tour, ce qui est logique.

0
okkko

J'utilise VS 2017 15.7.5 et cela a cessé de fonctionner pour certains fichiers de test. J'ai remarqué qu'ils étaient tous les nouveaux que j'avais récemment ajoutés et que, dans l'Explorateur de solutions, aucune flèche n'était disponible pour se développer et voir les propriétés/méthodes.

J'ai exclu et ensuite ré-inclus dans le projet et la commande go to definition a de nouveau fonctionné.

0
Liam

J'ai également fait face au même problème et "Trouver toutes les références" pour la classe sélectionnée a résolu ce problème.

0
Artem Ustimov