Impossible de trouver les fichiers .cs pour le débogage du code source .NET

88

J'ai essayé de configurer le débogage de la source .NET en suivant cette procédure pas à pas MDSN . Le cache de symboles est correctement configuré, tout comme la coche «Activer la progression de la source .NET Framework».

Mais par la suite, chaque fois que je veux entrer dans le code .NET, je suis invité à spécifier l'emplacement du fichier cs pertinent. Le message d'erreur est You need to find <filename>.cs to view the source for the current call stack frameet The debugger could not locate the source file <filename>.cs.

On me propose de rechercher le fichier (mais je ne l'ai pas) ou d'afficher un démontage (mais je ne le veux pas).

Comment entrer dans le code source .NET?

JBSnorro
la source

Réponses:

140

Eh bien, dans mon cas, je n'essayais pas de déboguer le framework .Net, mais j'obtenais la même erreur: Impossible de trouver les fichiers .cs pour le débogage du code source .NET . J'ai donc dû activer l'option "Activer uniquement mon code" sous:
Outils -> Options -> Débogage -> Général -> Activer uniquement mon code

Par document MS:

Vous pouvez configurer Visual Studio pour qu'il passe automatiquement au-dessus du système, de l'infrastructure et d'autres appels non utilisateur et réduire ces appels dans la fenêtre de la pile d'appels.

https://docs.microsoft.com/en-us/visualstudio/debugger/just-my-code

Dier
la source
J'avais activé ".NET Framework source stepping" qui avait désactivé "Juste mon code" automatiquement et cela me rendait fou de ne pas pouvoir intervenir jusqu'à ce que je trouve cela. Alors faites attention lorsque vous marquez les options pour voir ce qui est désactivé :)
Alan Warden
1
Je pensais avoir activé cela auparavant. Je suis allé vérifier, et bien sûr, cela n'a pas été vérifié. Merci!
coinbird
1
Excellente réponse et a résolu mon problème, mais cela sautera le fichier et ne passera pas dedans. Pourrait avoir besoin d'une autre solution si l'objectif est d'entrer dans le fichier.
Word Rearranger
51

Vérification Tools-> Options-> Debugging-> General-> Enable source server supportmystérieusement fait que tout fonctionne. J'espère que la même chose est vraie pour toi

JBSnorro
la source
19
Seigneur, pourquoi ça ne marche pas? Vous êtes toujours invité à parcourir le fichier de code source lorsque vous essayez d'entrer dans le code du framework.
gravidThoughts
28

Cela m'a également pris une heure. Je l'ai finalement corrigé en réinitialisant les paramètres -> Outils -> Paramètres d'importation et d'exportation -> Réinitialiser tous les paramètres

Stefan
la source
Ça a marché! Après la réinitialisation, j'ignore simplement le paramètre «options-> Débogage» et j'importe ce que j'ai exporté. Agréable!!
Mystic Lin
J'ai travaillé dans VS 2015 Pro, bien sûr, je n'ai pas de paramètres personnalisés dont j'ai besoin car cela les épaterait.
RandomUs1r
La réinitialisation de tous mes paramètres a également résolu cela pour moi ... quel mal de tête. J'ai tellement de paramètres de couleur personnalisés pour le débogage que j'ai dû les enregistrer dans un fichier séparé - que je ne peux plus utiliser, grrr.
EspressoBeans le
J'ai réinitialisé les paramètres et redémarré Visual Studio 2017. Le redémarrage après la réinitialisation a fait l'affaire.
Siddharth
J'ai effectué cette réinitialisation pour Visual Basic .NET avec VS Ultimate 2013 car c'est ce avec quoi je codifie et cette réinitialisation a arrêté le message d'erreur étrange datetime.cs ne peut pas trouver.
JohnH
7

Nettoyez la solution avant la compilation a résolu le problème pour moi.

Naviguez et cliquez sur:

  1. Build-> Clean Solution.
  2. Build-> Build Solution (Ctrl + Shift + B).
Shahar Shokrani
la source
7

J'ai essayé toutes les réponses ci-dessus et rien n'a fonctionné.

Cela a résolu le problème pour moi:

Debug -> Delete all Breakpoints

et cela a résolu le problème! Tant de choses différentes causent ce problème.

Accueil
la source
Après avoir essayé chaque combinaison de paramètres du débogueur JIT, nettoyé ma solution, redémarré VS2019 des centaines de fois, réparé, réinitialisé tous mes paramètres, etc., etc., etc., c'était Supprimer tous les points d'arrêt qui a fait disparaître mon erreur "Source non trouvée" , lors d'une tentative de débogage d'un test XUnit. AAAAAAAAAAARGH. Et merci @HomeMade
Ted
Je ne comprends pas, mais cela a vraiment résolu le problème ...
Lukáš Kmoch
Comme étape supplémentaire - j'ai dû nettoyer et reconstruire ma solution - pour qu'elle fonctionne pour moi.
Naren le
5

Les réponses ici parlent toutes d'ignorer / d'éviter le code source au lieu d'entrer réellement dans celui-ci.

@JBSnorroest sur la bonne voie, mais le problème est que Microsoft ne semble pas publier tous les symboles / sources .NET que vous pourriez rencontrer. Je ne sais pas si c'est intentionnel de leur part, mais pour entrer dans les sources MS, ils doivent publier chaque version de chaque assemblage, ce qui est une grande tâche logistique.

Tools-> Options-> Debugging-> General-> Enable source server supportfonctionnera dans de nombreux cas mais j'ai trouvé par exemple mscorlib.dllpour 4.6.1 qu'il manquait des symboles et / ou une source décompilée. Je ne pouvais donc pas entrer dans le code source commun comme Dictionary.csou Task.cscomme exemples. Puisque la source et les symboles du serveur de symboles MS changent probablement tout le temps. Mon problème peut être résolu au moment où vous lisez ceci?

Lorsque je débogue la même solution dans Jetbrain's Rider, je peux voir et parcourir chaque classe de chaque assembly .NET sans problème. Cependant, dans VS, je ne peux entrer que dans une classe mais pas dans d'autres?

Si vous êtes vraiment déterminé à entrer dans tout le code source .NET, vous pouvez utiliser DotPeek de Jetbrain et décompiler les assemblys .NET en fichiers .cs réels sur votre disque. Alors quand tu vois ça,

Exemple de code source introuvable

Vous pouvez maintenant parcourir votre disque jusqu'au code source que vous avez décompilé à l'aide de DotPeek. Assurez-vous simplement d'avoir décompilé la même version d'assembly que vous référencez dans votre projet. Sinon, les symboles peuvent ne pas correspondre aux bons numéros de ligne source.

Au lieu de cela, si vous voulez simplement empêcher que cette "Source introuvable" n'apparaisse constamment et que vous ne voulez pas entrer dans le code pour lequel il n'y a pas de sources, lisez @Alex Shermanla réponse. Vous devrez déterminer dans quel assembly le fichier incriminé est contenu, puis ajouter ce nom d'assembly à la liste d'exclusion.

Matière à réflexion, je ne suis pas fan de Rider over VS. Rider est toujours un peu brut et manque de la quantité folle d'outillage intégré que VS a. Pourtant!! J'aime l'avoir installé côte à côte dans des cas comme celui-ci où je sais que je peux m'enfoncer plus profondément dans les mauvaises herbes.

Manger chez Joes
la source
1

Eu le même problème, aucune des solutions proposées ci-dessus ne m'a aidé à résoudre le problème. S'est produit dans VS 2017. Lorsque j'ai exécuté le projet dans Visual Studio 2019, tout fonctionnait. Essayez donc de l'exécuter dans d'autres environnements. J'espère que cette réponse aidera quelqu'un

OlegI
la source
Ça m'a aidé. J'ai installé 2019 et tout fonctionne à nouveau. Peut-être que j'ai gâché mes paramètres.
Mo D Genesis
0

Si l'erreur provient de la recherche de "nullable.cs" ou d'un autre fichier source principal:

Vous pouvez désactiver les symboles pour des modules spécifiques en utilisant Debug -> Options -> Debugging -> Symbolspuis en bas Specify Excluded Modules.

Ceci est utile pour les cas où vous faire voulez désactiver « Just My Code » à pas dans d' autres assemblées que vous avez PDB pour. Je pense que Visual Studio est livré avec des symboles pour mscorlib.dllmais n'inclut pas la source, donc parfois, entrer dans les choses cherchera un "nullable.cs" ou un autre fichier source principal.

Alex Sherman
la source
0

J'ai eu cette erreur lors de la mise à jour d'un package NuGet dans un projet, tout en manquant de le mettre à jour dans d'autres projets de la solution.

Accéder au gestionnaire NuGet de la solution et utiliser la fonction de consolidation, qui garantit que tous les projets de la solution utilisent la même version, a résolu le problème pour moi.

RonnyR
la source
0

Dans mon cas, j'ai fini par renommer la classe. Peut-être que cela se confondait avec un autre module. Une fois que je l'ai renommé, je pouvais intervenir.

Kirsten Greed
la source