56

Próbuję debugować projekt, który ma odniesienie do biblioteki DLL, które dodałem, biblioteka DLL jest przechowywany w katalogu zewnętrznym i właśnie dodałem odniesienia. Teraz oczywiście mogę debugować mój projekt, ale linia, która wywołuje metodę w mojej innej bibliotece DLL, nie mogę wkroczyć w to, tj. F12.Visual Studio: Debugowanie odniesienia biblioteki DLL, Mam źródła w innym SLN

Jednym ze sposobów, w jaki mogłem to zrobić, było dodanie mojego projektu (dll) jako istniejącego projektu do mojego rozwiązania i zastąpienie odnośnika dll, aby użyć dołączonego projektu, a nie pliku na dysku.

Ale co za bałagan, jestem pewien, że jest czystszy sposób?

Pamiętam, że kopiowałem niektóre pliki PDB lub coś takiego, ale nie pamiętam. Czy muszę otworzyć 2 egzemplarze wizualnego studia, 1 dla mojego głównego projektu i 1 dla odniesienia do biblioteki DLL?

+0

Spróbuj skopiować pliki PDB przez. Wierzę, że będzie działać podobnie do sposobu, w jaki działają odniesienia do serwerów symboli microsoft. –

Odpowiedz

64

Przebuduj drugie rozwiązanie w trybie debugowania na własnym komputerze (aby ścieżki plików w tym PDB były specyficzne dla twojego komputera).

Skopiuj zarówno pliki .DLL, jak i .PDB do folderu referencji. Visual Studio automatycznie pobierze plik .PDB i użyje ścieżek plików do wyświetlenia źródła.

Można również użyć symboli Server i serwera źródłowego do osiągnięcia tego celu, gdy odwołuje się zespół zbudowany jest gdzie indziej: http://msdn.microsoft.com/en-us/library/vstudio/ms241613.aspx

+11

Jak dodawać punkty przełamania do kodu DLL, jeśli nie można przejść bezpośrednio do kodu przez bezpośrednie wywołanie metody? –

+0

To jest świetna odpowiedź. Zastanawiam się, dlaczego nie mogłem dubugować do DLL !!! Nie udało mi się skopiować pliku .PDB. Po skopiowaniu działało dobrze :) @ Knaģis –

+2

@ JennyO'Reilly można skompilować 'System.Diagnostics.Debugger.Break()' (https://msdn.microsoft.com/en-us/library/system .diagnostics.debugger.break (v = vs.110) .aspx) wywołaj metodę do swojego rozwiązania. Oczywiście należy uważać, aby to nie kończyło się na kodzie produkcyjnym (może użyć instrukcji prekompilacji '#if DEBUG') – Liam

0

Po wykonaniu kompilacji Debug, wszystkie pliki DLL i WPB są ustalone w projekcie nadrzędnym. Dlatego nie ma potrzeby ręcznego kopiowania plików.

Kliknij prawym przyciskiem myszy Rozwiązanie, wybierz Dodaj/Istniejący projekt ... Przejdź do folderu Klasy i wybierz plik proj (np. Myproj.csproj). Pliki nie są kopiowane, tylko odwołuje się i można otworzyć źródło dla klasy w IDE i ustawić punkty przerwania w normalny sposób i po prostu działa.

9

mam rozwiązanie, wykonując poniżej

spróbuj wyłączyć Just My kodu (JMC).

Narzędzia -> Opcje -> Debugger odznacz "Włącz Just My Code"

+0

Po spędzeniu godziny próbując przekompilować i ponownie odwołać biblioteki DLL, nie mogę tego zrobić wystarczająco! – dhysong

1

miałem ten sam problem, który ja rozwiązany poprzez czyszczenie i odbudowy rozwiązanie. Poprawi odniesienia w plikach .pdb, aby zlokalizować i trafić punkt przerwania w drugim projekcie.