J'ai un projet (A) qui fait référence à un assemblage d'une bibliothèque de classes de projet externe (B) située dans une autre solution vs.
Je n'ai pas encore compris comment je peux déboguer efficacement la bibliothèque de classes à partir de B tout en exécutant le programme à partir du projet A. Y a-t-il quelque chose que je dois activer sur le projet B tel que les informations de débogage, etc. pour que je puisse intervenir au moment du débogage à partir de A?
Merci d'avance.
la source
Cela me dérange depuis un certain temps. Ce que je finis généralement par faire, c'est reconstruire ma bibliothèque externe en utilisant le mode débogage, puis copiez à la fois .dll et le fichier .pdb dans la corbeille de mon site Web. Cela me permet d'entrer dans le code de la bibliothèque.
la source
Supposons le chemin de
Projet
A
Projet
B
et la dll de ProjectB est dans
Pour déboguer
ProjectB
depuisProjectA
, procédez comme suitB
la DLL avec les DLL.PDB
dans leProjectA
répertoire de compilation de.ProjectA
. Lorsque le code atteint la partie où vous devez appeler la méthode ou les événements de la dll pendant le débogage, appuyez surF11
pour entrer dans le code de la dll.REMARQUE: NE MANQUEZ PAS DE COPIER LE FICHIER .PDB
la source
Je lance deux instances de Visual Studio - une pour la DLL externe et une pour l'application principale.
Dans les propriétés du projet de la dll externe, définissez les éléments suivants:
Créer des événements:
copy /y "$(TargetDir)$(TargetName).dll" "C:\<path-to-main> \bin\$(ConfigurationName)\$(TargetName).dll"
copy /y "$(TargetDir)$(TargetName).pdb" "C:\<path-to-main> \bin\$(ConfigurationName)\$(TargetName).pdb"
Déboguer:
Démarrez le programme externe:
C:\<path-to-main>\bin\debug\<AppName>.exe
Directeur de travail
C:\<path-to-main>\bin\debug
De cette façon, chaque fois que je construis la dll externe, elle est mise à jour dans le répertoire de l'application principale. Si je frappe le débogage du projet de la dll externe - l'application principale s'exécute, mais le débogueur n'atteint que les points d'arrêt dans la dll externe. Si j'appuie sur le débogage à partir du projet principal, l'application principale s'exécute avec la dll externe la plus récemment construite, mais maintenant le débogueur n'atteint que les points d'arrêt dans le projet principal.
Je me rends compte qu'un débogueur fera le travail pour les deux, mais je trouve plus facile de garder les deux droits de cette façon.
la source
[selon Martin Beckett, le gars qui m'a envoyé cette réponse]
Vous pouvez déboguer dans une bibliothèque externe.
Dans l'onglet des paramètres du projet, recherchez «répertoires de studio visuel» dans le champ «code source», y compris le chemin d'accès aux sources openCV. Assurez-vous ensuite que les fichiers .pdb pour chacune des dll de débogage se trouvent dans le même répertoire que la dll.
la source
J'avais un problème similaire car mes points d'arrêt dans le projet (B) n'étaient pas atteints. Ma solution était de reconstruire le projet (B) puis de déboguer le projet (A) car les dll devaient être mises à jour.
Visual studio devrait vous permettre de déboguer dans une bibliothèque externe.
la source
Références NuGet
Supposons que -Project_A (produit project_a.dll) -Project_B (produit project_b.dll) et Project_B références aux packages Project_A by NuGet, puis copiez simplement project_a.dll, project_a.pdb dans le dossier Project_B / Packages. En effet, cela devrait être copié dans le fichier / bin.
Déboguez maintenant Project_A. Lorsque le code atteint la partie où vous devez appeler la méthode ou les événements de la dll pendant le débogage, appuyez sur F11 pour entrer dans le code de la dll.
la source