Mam projekt (A), który odwołuje się do zestawu z biblioteki klas projektu zewnętrznego (B), która znajduje się w innym rozwiązaniu vs.
Nie rozumiem jeszcze, w jaki sposób mogę skutecznie debugować bibliotekę klas z poziomu B podczas uruchamiania programu z projektu A. Czy jest coś, co muszę włączyć w projekcie B, na przykład informacje o debugowaniu itp., Abym mógł wkroczyć w czasie debugowania z poziomu A?
Z góry dziękuję.
źródło
Wkurza mnie to od jakiegoś czasu. To, co zwykle robię, to odbudowywanie mojej zewnętrznej biblioteki w trybie debugowania, a następnie kopiowanie zarówno pliku .dll, jak i .pdb do kosza mojej witryny. To pozwala mi wejść do kodu biblioteki.
źródło
Przyjmij ścieżkę
Projekt
A
Projekt
B
a dll ProjectB jest w
Aby debugować w programie
ProjectB
fromProjectA
, wykonaj następujące czynnościB
bibliotekę dll z bibliotekami DLL.PDB
doProjectA
katalogu kompilacji.ProjectA
. Gdy kod dotrze do części, w której musisz wywołać metodę biblioteki DLL lub zdarzenia itp. Podczas debugowania, naciśnij,F11
aby przejść do kodu biblioteki DLL.UWAGA: NIE PRZEGAP SKOPIOWANIA PLIKU .PDB
źródło
Uruchamiam dwie instancje Visual Studio - jedną dla zewnętrznej biblioteki dll i jedną dla aplikacji głównej.
We właściwościach projektu zewnętrznej biblioteki DLL ustaw następujące elementy:
Tworzenie wydarzeń:
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"
Odpluskwić:
Uruchom program zewnętrzny:
C:\<path-to-main>\bin\debug\<AppName>.exe
Katalog roboczy
C:\<path-to-main>\bin\debug
W ten sposób za każdym razem, gdy buduję zewnętrzną bibliotekę dll, jest ona aktualizowana w katalogu głównej aplikacji. Jeśli trafię na debugowanie z projektu zewnętrznej biblioteki dll - główna aplikacja działa, ale debugger uderza tylko w punkty przerwania w zewnętrznej bibliotece dll. Jeśli trafię na debugowanie z głównego projektu, główna aplikacja działa z ostatnio zbudowaną zewnętrzną biblioteką dll, ale teraz debugger osiąga tylko punkty przerwania w głównym projekcie.
Zdaję sobie sprawę, że jeden debugger wykona zadanie dla obu, ale w ten sposób łatwiej mi jest utrzymać te dwa prosto.
źródło
[według Martina Becketta, gościa, który przesłał mi tę odpowiedź]
Możesz debugować w zewnętrznej bibliotece.
Na karcie ustawień projektu poszukaj „katalogów Visual Studio” w polu „kod źródłowy” i uwzględnij ścieżkę do źródeł openCV. Następnie upewnij się, że pliki .pdb dla każdej biblioteki DLL debugowania znajdują się w tym samym katalogu, co dll.
źródło
Miałem podobny problem, ponieważ moje punkty przerwania w projekcie (B) nie zostały trafione. Moim rozwiązaniem było przebudowanie projektu (B), a następnie debugowanie projektu (A), ponieważ biblioteki DLL musiały zostać zaktualizowane.
Program Visual Studio powinien umożliwiać debugowanie w bibliotece zewnętrznej.
źródło
Odwołania NuGet
Załóżmy, że -Project_A (tworzy project_a.dll) -Project_B (tworzy project_b.dll) i Project_B odwołania do Project_A przez pakiety NuGet, a następnie po prostu skopiuj project_a.dll, project_a.pdb do folderu Project_B / Packages. W efekcie to powinno zostać skopiowane do / bin.
Teraz debuguj Project_A. Gdy kod dotrze do części, w której musisz wywołać metodę biblioteki DLL lub zdarzenia itp. Podczas debugowania, naciśnij klawisz F11, aby przejść do kodu biblioteki DLL.
źródło