2017-09-23 11 views
0

J'ai ajouté une bibliothèque NuGet à mon projet. J'ai également cloné le code de la bibliothèque de GitHub et compilé dans le débogage.Comment déboguer une bibliothèque OSS ajoutée à mon projet d'application par NuGet?

Comment puis-je faire en sorte que mon projet utilise les PDB pour que je puisse entrer dans le code de la bibliothèque? Puis-je faire cela en conservant une référence à la bibliothèque NuGet? Je pourrais juste enlever la référence de NuGet et ajouter une référence au projet de bibliothèque. J'ai essayé d'ajouter un chemin aux PDB dans les paramètres VS Symbols mais cela n'a pas fonctionné (j'ai ouvert un fichier de code source de la bibliothèque dans mon VS pendant le débogage et mis un point d'arrêt quelque part je sais qu'il est touché, n'a pas)

enter image description here

+0

La meilleure façon de déboguer la bibliothèque consiste à supprimer la référence NuGet et à ajouter une référence à la bibliothèque OSS. Assurez-vous d'ajouter la même version de la bibliothèque que celle fournie par NuGet. – Odrai

+0

Merci, mais j'essaie de trouver un moyen plus facile. J'ai eu le commit exact qui a été utilisé pour créer la bibliothèque sur NuGet. –

Répondre

0

Si vous êtes chanceux projet OSS publie des paquets sources et symboles à SymbolSource, de cette façon vous pouvez simplement les ajouter aux sources Symbole, éteindre « Juste mon code » dans le paramètres du débogueur et débogage. Si vous n'êtes pas chanceux, mais si l'auteur a au moins ajouté les PDB au paquet Nuget lui-même, le débogueur peut vous inviter à pointer vers les sources, pointer vers votre repo git local et déboguer . Si vous pouvez trouver les PDB à partir d'une autre source, copiez-les simplement dans votre répertoire de sortie et Visual Studio les récupérera et demandera l'emplacement source.

Si vous êtes paresseux (comme je le suis dans la plupart de ces cas), utilisez etup dotPeek as a Symbol Server ou utilisez "Étape dans le code décompilé" dans Resharper et décompilez juste la bibliothèque OSS à la volée pour les déboguer. Vous n'obtiendrez pas les plus belles sources, mais dans de nombreux cas, le travail est fait. En dehors de dotPeek, Red-Gate Reflector Pro a une fonctionnalité similaire. À partir des sources locales, vous pouvez créer votre propre version de débogage du package NuGet. Si les PDB sont inclus et que les sources sont disponibles localement, Visual Studio les récupère automatiquement. Vous ajouteriez un dossier local en tant que source NuGet et il vous permettra de choisir votre version personnalisée temporairement. Le dernier recours serait d'enlever le paquet de NuGet localement et de passer complètement aux sources localement construites. Dernier recours car dans certains cas cela peut ne pas être possible (le code que vous essayez de déboguer est référencé par d'autres composants et doit être fortement signé par exemple). Et cela nécessite des changements significatifs au projet local et vous ne pouvez pas vraiment engager les résultats intermédiaires de votre entreprise.

+0

Merci. Non, le NuGet n'utilise pas SymbolSource et n'a pas de PDB avec lui. J'essaie de le faire en VS et je n'ai pas Resharper. Si je construis mon propre paquet NuGet et que je lui ajoute une source NuGet locale, comment puis-je faire changer la source NuGet sans avoir à rajouter NuGet à mes projets? Peut-être que je viens de supprimer le dossier NuGet de sorte que NuGet devra le récupérer et utiliser la source locale? –

+0

Il y a une autre solution que je pense: je pourrais simplement copier les DLL et les PDB dans le dossier \ packages \ Prism \ et je pense que cela fonctionnera. Quand j'ai terminé le débogage, je peux simplement supprimer le dossier afin que NuGet les télécharge –

+0

Non, il ne fonctionne pas –