140 votes

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

J'ai essayé de mettre en place le débogage de la source .NET en suivant ceci MDSN walkthrough . Le cache de symboles est correctement configuré, de même que le contrôle "Enable .NET Framework source stepping".

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

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

Comment entrer dans le code source de .NET ?

11voto

Eat at Joes Points 716

Les réponses ici parlent toutes d'ignorer/éviter le code source au lieu de s'y plonger.

@JBSnorro est 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 accéder aux sources MS, ils doivent publier chaque version de chaque assemblage, ce qui représente une tâche logistique importante.

Tools -> Options -> Debugging -> General -> Enable source server support fonctionnera dans de nombreux cas mais j'ai trouvé par exemple mscorlib.dll pour 4.6.1 manquait de symboles et/ou de source décompilée. Je ne pouvais donc pas accéder au code source courant comme Dictionary.cs o Task.cs à titre d'exemple. Puisque la source et les symboles du serveur de symboles MS changent probablement tout le temps. Mon problème sera peut-être résolu au moment où vous lirez ceci ?

Lorsque je débogue la même solution dans Jetbrain's Rider, je peux voir et parcourir chaque classe de chaque assemblage .NET sans aucun problème. Cependant, dans VS, je ne peux accéder qu'à certaines classes, mais pas à d'autres ?

Si vous êtes vraiment déterminé à pénétrer dans tout le code source .NET, vous pouvez utiliser DotPeek de Jetbrain et décompiler les assemblages .NET en fichiers .cs sur votre disque. Ensuite, lorsque vous voyez ceci,

Example of source code not found

Vous pouvez maintenant parcourir votre disque jusqu'au code source que vous avez décompilé en utilisant DotPeek. Assurez-vous simplement que vous avez décompilé la même version d'assemblage que celle à laquelle vous faites référence dans votre projet. Sinon, les symboles peuvent ne pas correspondre aux numéros de ligne de source corrects.

Au lieu de cela, si vous voulez simplement empêcher l'apparition constante de ce "Source Not Found" et que vous ne voulez pas entrer dans le code pour lequel il n'existe pas de sources, lisez la rubrique @Alex Sherman Réponse de l'entreprise. Vous devez déterminer dans quel assemblage le fichier en question est contenu, puis ajouter le nom de cet assemblage à la liste d'exclusion.

Nourriture pour la réflexion, je ne suis pas un fan de Rider sur VS. Rider est encore un peu brut et n'a pas la quantité folle d'outils intégrés que VS possède. Cependant ! J'aime l'avoir installé côte à côte dans des cas comme celui-ci où je sais que je peux aller plus loin dans les mauvaises herbes.

5voto

user429460 Points 68

Allez dans Outils -> Options -> Débogage -> et assurez-vous que "Activer seulement mon code" est coché vrai.

Cela fonctionne pour moi. Assurez-vous de voter en haut de page.

2voto

Alex Sherman Points 329

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

Vous pouvez désactiver les symboles pour des modules spécifiques en utilisant la fonction Debug -> Options -> Debugging -> Symbols et ensuite sur le fond Specify Excluded Modules .

Ceci est utile dans les cas où vous faire Vous pouvez désactiver "Just My Code" pour accéder à d'autres assemblages pour lesquels vous disposez de PDB. Je pense que Visual Studio est livré avec des symboles pour mscorlib.dll mais ne no inclure la source, de sorte qu'il arrive que l'on cherche un fichier "nullable.cs" ou un autre fichier source de base.

1voto

OlegI Points 389

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

0voto

itdoesntwork Points 714

Vous pouvez trouver le code source à télécharger ici pour que vous puissiez déboguer correctement. https://referencesource.microsoft.com/#mscorlib,namespaces

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X