182 Stimmen

Wie debuggt man externe Klassenbibliothek Projekte in Visual Studio?

Ich habe ein Projekt (A), das auf eine Baugruppe aus einer Klassenbibliothek eines externen Projekts (B) verweist, die sich in einer anderen vs-Lösung befindet.

Ich habe noch zu verstehen, wie ich effizient die Klassenbibliothek von B debuggen kann, während das Programm von Projekt A ausgeführt wird. Gibt es etwas, das ich auf Projekt B wie Debug-Informationen usw. aktivieren muss, so dass ich zur Debug-Zeit von A einsteigen kann?

254voto

JaredPar Punkte 699699

Versuchen Sie, Just My Code (JMC) zu deaktivieren.

  • Extras > Optionen > Fehlersuche
  • Deaktivieren Sie "Nur meinen Code aktivieren".

Standardmäßig versucht der Debugger, die Sicht auf die Welt auf Code zu beschränken, der nur in Ihrer Lösung enthalten ist. Das ist manchmal wirklich hilfreich, aber wenn Sie Code debuggen wollen, der nicht in Ihrer Lösung enthalten ist (wie in Ihrer Situation), müssen Sie JMC deaktivieren, um ihn zu sehen. Andernfalls wird der Code als extern behandelt und ist für Sie weitgehend unsichtbar.

EDITAR

Wenn Sie in Ihrem Code eine Panne haben, versuchen Sie Folgendes.

  • Fehlersuche > Fenster > Module
  • Suchen Sie die DLL für das Projekt, an dem Sie interessiert sind
  • Klicken Sie mit der rechten Maustaste > Symbole laden > Wählen Sie den Pfad zur PDB-Datei für Ihr anderes Projekt.

22voto

Sarath KS Punkte 17823

Angenommen, der Pfad von

Projekt A

C:\Projects\ProjectA

Projekt B

C:\Projects\ProjectB

und die DLL von ProjektB ist in

C:\Projects\ProjectB\bin\Debug\

Zur Fehlersuche in ProjectB de ProjectA tun Sie Folgendes

  1. Kopieren B dll mit dll's .PDB zum ProjectA Kompilierverzeichnis.
  2. Jetzt debuggen ProjectA . Wenn der Code die Stelle erreicht, an der Sie während des Debuggens die Methode oder Ereignisse der DLL usw. aufrufen müssen, drücken Sie F11 um in den Code der DLL einzudringen.

HINWEIS: VERSÄUMEN SIE NICHT, DIE .PDB-DATEI ZU KOPIEREN

15voto

TheGateKeeper Punkte 4340

Das hat mich schon seit einiger Zeit gestört. Normalerweise baue ich meine externe Bibliothek im Debug-Modus neu auf und kopiere dann sowohl die .dll- als auch die .pdb-Datei in die Bin-Datei meiner Website. So kann ich in den Bibliothekscode einsteigen.

6voto

Ich führe zwei Instanzen von Visual Studio aus - eine für die externe DLL und eine für die Hauptanwendung.
In den Projekteigenschaften der externen DLL stellen Sie Folgendes ein:

Ereignisse aufbauen:

  • 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"

Fehlersuche:

  • 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 jedes Mal, wenn ich sie erstelle, im Verzeichnis der Hauptanwendung aktualisiert. Wenn ich Debug aus dem Projekt der externen DLL anklicke - die Hauptanwendung läuft, aber der Debugger trifft nur auf Haltepunkte in der externen DLL. Wenn ich vom Hauptprojekt aus auf Debuggen drücke, wird die Hauptanwendung mit der zuletzt erstellten externen DLL ausgeführt, aber der Debugger trifft jetzt nur auf Haltepunkte im Hauptprojekt.

Mir ist klar, dass ein Debugger die Aufgabe für beide erfüllt, aber ich finde es einfacher, die beiden auf diese Weise auseinanderzuhalten.

4voto

Lachezar Lalov Punkte 437

Wenn Sie eine main (Projekt A) y externe Bibliothek (Projekt B) :

  1. Offen (Projekt A) Lösung in Visual Studio.

  2. Rechtsklick auf Lösung -> Vorhandenes Projekt hinzufügen -> wählen Sie dann die .csproj-Datei Ihrer externen Bibliothek (Projekt B) .

  3. Wieder in Visual Studio Rechtsklick auf (Projekt A) -> hinzufügen -> Projektreferenz... -> und dann Häkchen hinzufügen auf Ihrer externen Bibliothek, die Sie debuggen wollen (Projekt B) .

  4. Endlich Bremspunkte setzen en (Projekt A) wo Ihre externe Bibliothek (Projekt B) aufgerufen wird und mit F5 ausführen .

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X