J'ai publié des bibliothèques privées/internes sous forme de packages NuGet, en utilisant l'option symboles. Les packages et les symboles sont hébergés sur un partage réseau interne. Comment puis-je entrer dans ces paquets lors du débogage?
Lorsque j'effectue le codage de ces packages, Visual Studio affiche une page "Aucune source disponible"/"Aucun symbole trouvé". En cliquant sur "Charger les symboles", seuls les fichiers pdb sont autorisés, pas les packages de symboles.
Ces packages ne sont pas adaptés à la publication sur NuGet Gallery/SymbolSource.
Quelle est la commande que vous avez utilisée pour générer les packages avec les symboles? J'ai essayé de faire exactement la même chose nuget.exe pack -Prop Configuration=Release Framework.csproj -Symbols
Cela crée deux fichiers: Framework.nupkg et Framework.symbols.nupkg . J'ai mis ces fichiers sur un partage réseau, je les ai utilisés dans un autre projet et le débogage a bien fonctionné.
Avez-vous essayé de placer les fichiers * .nupkg et * .symbols.nupkg sur un disque local au lieu d'un partage réseau?
Il y a plusieurs options. l'un consiste à configurer et configurer votre propre serveur de symboles .
Vous pouvez également télécharger ProGet d'Inedo, activer la diffusion de symboles sur le flux cible, puis publier vos packages sur ProGet. Tout cela peut être fait avec l'édition gratuite de ProGet.
disclaimer - mon travail quotidien est à Inedo
Il existe également un outil appelé GitLink ( https://github.com/GitTools/GitLink ) qui peut insérer dans le fichier de symboles des liens vers des fichiers GIT versionnés de votre source.
La façon dont nous le faisons (et fonctionne):
Liens utiles:
Important: "Les outils de débogage pour Windows" ne seront pas installés s'ils détectent une version plus récente de Visual C++ Redist dans le système dont ils ont besoin/qu'ils attendent.
Configuration Vs pour déboguer à l'aide de SymbolSource
L'URL à ajouter ressemble à http://your.symbolsource-server.com:[port]/[appContext]/WinDbg/pdb
Vous pouvez configurer votre propre serveur SymbolSource en interne à l'aide de ces partages réseau . Vous pouvez trouver un tutoriel pas à pas sur mon blog.
Il s’agit essentiellement de créer une application MVC vide et d’exécuter
Package d'installation SymbolSource.Server.Basic
À partir de là, vous devez configurer l'infrastructure d'hébergement, configurer Visual Studio et créer des agents.
J'ai trouvé que ça ne marche pas du tout. Les références du package NuGet sont fermées et ne peuvent pas être utilisées dans le débogueur. Au lieu de cela, j'ai supprimé la référence Assembly du projet et ajouté une référence à une version Debug de la DLL directement par chemin.
Ensuite, pour que le débogueur s'arrête quelque part dans ce code, j'ai inséré l'appel System.Diagnostics.Debugger.Break();
dans ce code. Lors de l'exécution, le débogueur s'arrête sur cette ligne, qui est essentiellement un point d'arrêt défini par le code. Cela ouvrira le fichier source correct et passera automatiquement à cette ligne.
Ouvrez le projet de bibliothèque dans une seconde instance VS, déplacez-vous si nécessaire vers les appels Break
et reconstruisez la bibliothèque. Une fois terminé, supprimez ces appels du code de la bibliothèque et restaurez la référence d'origine (il peut être nécessaire de réinstaller le paquet NuGet).