Ich habe ein Projekt (A), das auf eine Assembly aus einer externen Projektklassenbibliothek (B) verweist, die sich in einer anderen vs-Lösung befindet.
Ich habe noch nicht verstanden, wie ich die Klassenbibliothek effizient von B aus debuggen kann, während ich das Programm von Projekt A aus starte. Muss ich in Projekt B etwas aktivieren, z. B. Debug-Informationen usw., damit ich zur Debug-Zeit von A aus einsteigen kann?
Danke im Voraus.
quelle
Das nervt mich schon seit einiger Zeit. Normalerweise erstelle ich meine externe Bibliothek im Debug-Modus neu und kopiere dann sowohl die DLL- als auch die PDF-Datei in den Papierkorb meiner Website. Dadurch kann ich in den Bibliothekscode eintreten.
quelle
Nehmen Sie den Weg von
Projekt
A
Projekt
B
und die DLL von ProjectB ist in
Gehen Sie wie folgt
ProjectB
vorProjectA
, um in zu debuggenB
die DLL mit den DLLs.PDB
in dasProjectA
Kompilierungsverzeichnis.ProjectA
. Wenn der Code den Teil erreicht, an dem Sie beim Debuggen die Methode oder Ereignisse usw.F11
der DLL aufrufen müssen, drücken Sie , um in den Code der DLL zu gelangen.HINWEIS: VERPASSEN SIE NICHT, DIE .PDB-DATEI ZU KOPIEREN
quelle
Ich führe zwei Instanzen von Visual Studio aus - eine für die externe DLL und eine für die Hauptanwendung.
Legen Sie in den Projekteigenschaften der externen DLL Folgendes fest:
Ereignisse erstellen:
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"
Debuggen:
Externes Programm starten:
C:\<path-to-main>\bin\debug\<AppName>.exe
Arbeitsverzeichnis
C:\<path-to-main>\bin\debug
Auf diese Weise wird die externe DLL beim Erstellen im Verzeichnis der Hauptanwendung aktualisiert. Wenn ich Debug aus dem Projekt der externen DLL drücke, wird die Hauptanwendung ausgeführt, aber der Debugger trifft nur Haltepunkte in der externen DLL. Wenn ich im Hauptprojekt auf Debug klicke, wird die Hauptanwendung mit der zuletzt erstellten externen DLL ausgeführt, aber jetzt trifft der Debugger nur noch auf Haltepunkte im Hauptprojekt.
Mir ist klar, dass ein Debugger die Arbeit für beide erledigt, aber ich finde es einfacher, die beiden auf diese Weise gerade zu halten.
quelle
[laut Martin Beckett, dem Typ, der mir diese Antwort geschickt hat]
Sie können in einer externen Bibliothek debuggen.
Suchen Sie auf der Registerkarte "Projekteinstellungen" im Feld "Quellcode" nach "Visual Studio-Verzeichnissen" und geben Sie den Pfad zu den openCV-Quellen an. Stellen Sie dann sicher, dass sich die PDF-Dateien für jede Debug-DLL im selben Verzeichnis wie die DLL befinden.
quelle
Ich hatte ein ähnliches Problem, da meine Haltepunkte in Projekt (B) nicht erreicht wurden. Meine Lösung bestand darin, das Projekt (B) neu zu erstellen und dann das Projekt (A) zu debuggen, da die DLLs aktualisiert werden mussten.
Visual Studio sollte es Ihnen ermöglichen, in einer externen Bibliothek zu debuggen.
quelle
NuGet-Referenzen
Angenommen, die Verweise -Project_A (erzeugt project_a.dll) -Project_B (erzeugt project_b.dll) und Project_B verweisen auf Project_A von NuGet-Paketen, und kopieren Sie dann project_a.dll, project_a.pdb in den Ordner Project_B / Packages. Tatsächlich sollte das in den / bin kopiert werden.
Debuggen Sie nun Project_A. Wenn der Code den Teil erreicht, an dem Sie beim Debuggen die Methode oder Ereignisse usw. der DLL aufrufen müssen, drücken Sie F11, um in den Code der DLL einzusteigen.
quelle