9

Đối với mô đun, tôi liên kết tới một dll trong giải pháp của tôi trong thời gian chạy thay vì biên dịch thời gian để cho phép tôi cập nhật nó một cách độc lập. Khi tôi đặt các điểm ngắt trong dự án thư viện, chúng không được kích hoạt khi lớp được liên kết đến, và một kiểu được tạo ra.Gỡ lỗi một dll được liên kết với thời gian chạy

Để tham khảo, đây là mã phản ánh:

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

Có thể cho Visual Studio để cung cấp công cụ gỡ lỗi bình thường của nó trong kịch bản này? Làm thế nào tôi sẽ cấu hình này?

+0

Bài đăng có liên quan hữu ích [tại đây] (https://stackoverflow.com/a/40524596/465053). – RBT

Trả lời

8

Bạn cần đảm bảo tệp .pdb ở cùng vị trí với dll bạn đang tải. Visual Studio sau đó sẽ tải dữ liệu đó và cho phép nó dừng lại ở các điểm ngắt.

+0

Tệp pdb đang được sao chép vào cùng một thư mục, nhưng nó vẫn không kích hoạt các điểm ngắt. Chúng được đánh dấu là "Điểm ngắt sẽ không bị tấn công. Không có biểu tượng nào được tải cho tài liệu này". Cảm ơn đề xuất mặc dù – Venatu

+1

Dường như họ không đồng bộ hóa ... – Jammer

+0

Bạn đã cảm ơn đúng! Phương thức sao chép tôi đã sử dụng không ghi đè lên phiên bản trước đó. – Venatu

10

Trình gỡ lỗi cần có khả năng tìm tệp .pdb cho hội đồng. Bạn có thể chẩn đoán điều này từ cửa sổ Debugger + Windows + Modules. Nhấn chuột phải vào DLL và chọn Symbol Load Information, nó cho bạn thấy nơi trình gỡ lỗi tìm PDB.

Lưu ý rằng bạn nên không bao giờ sử dụng Assembly.LoadFile() trong trường hợp này, nó tải cụm không có ngữ cảnh tải. Một từ đắt tiền có nghĩa là CLR không quan tâm đến nơi mà các DLL đến từ và cho phép bạn tải các DLL nhiều hơn một lần. Bản thân nó giải thích tại sao trình gỡ rối không thể tìm thấy PDB. Luôn sử dụng LoadFrom() để thay thế.

+0

Bạn có thể mở rộng hoặc liên kết tôi để biết thêm thông tin về lợi ích của việc có ngữ cảnh không? Nó không phải là một cái gì đó Ive xem xét trước, nhờ lời khuyên – Venatu

+2

Nó được bao gồm trong bất kỳ cuốn sách trung gian về NET. –