9

Dla modułowości łączę się z biblioteką dll w moim rozwiązaniu w czasie wykonywania, zamiast kompilować czas, aby umożliwić mi samodzielną aktualizację. Kiedy umieszczam punkty przerwania w projekcie biblioteki, nie są one wyzwalane, gdy klasa jest połączona z typem i jest tworzony.Debugowanie biblioteki dll połączonej z runtime

Dla porównania, jest to kod odbicie:

Assembly a = Assembly.LoadFile(FULL_APPLICATION_CACHE + targetVersion + "\\Core.dll"); 
Type engineCoreType = a.GetType("Core.EngineCore"); 
object instance = Activator.CreateInstance(engineCoreType); 

Czy jest możliwe dla Visual Studio oferować swoje normalne narzędzia do debugowania w tym scenariuszu? Jak to skonfigurować?

+0

Pomocny powiązany wpis [tutaj] (https://stackoverflow.com/a/40524596/465053). – RBT

Odpowiedz

8

Musisz upewnić się, że pliki .pdb znajdują się w tym samym miejscu co ładowana biblioteka dll. Visual Studio załaduje te dane i pozwoli zatrzymać się w punktach przerwania.

+0

Plik pdb jest kopiowany do tego samego katalogu, ale nadal nie powoduje przerwania. Są one oznaczone jako "Punkt przerwania nie zostanie trafiony. Żaden symbol nie został załadowany dla tego dokumentu". Dzięki za sugestię – Venatu

+1

Wygląda na to, że nie są zsynchronizowane, a następnie ... – Jammer

+0

Byłeś poprawne dzięki! Zastosowana metoda kopiowania nie zastąpiła poprzedniej wersji. – Venatu

10

Debuger musi mieć możliwość znalezienia pliku .pdb dla zespołu. Możesz to zdiagnozować z okna Debugger + Windows + Modules. Kliknij prawym przyciskiem myszy bibliotekę DLL i wybierz polecenie Informacja o ładowaniu symboli, aby wyświetlić miejsce, w którym debugger szukał WPB.

Należy pamiętać, że należy nigdy użyć Assembly.LoadFile() w tym scenariuszu, ładuje złożeń bez kontekstu ładowania. Kosztowne słowo, które oznacza, że ​​CLR nie zwraca uwagi na skąd pochodzi biblioteka DLL i pozwala załadować bibliotekę DLL więcej niż jeden raz. Sam w sobie wyjaśnienie, dlaczego debugger nie może znaleźć WPB. Zawsze używaj LoadFrom().

+0

Czy możesz rozwinąć lub połączyć mnie z dodatkowymi informacjami na temat korzyści wynikających z posiadania kontekstu? To nie jest coś, co rozważałem wcześniej, dzięki za poradę – Venatu

+2

Jest to omówione w dowolnej książce pośrednika o .NET –

Powiązane problemy