Як налагодити проекти бібліотеки зовнішнього класу у візуальній студії?


137

У мене є проект (A), який посилається на збірку із зовнішньої бібліотеки класів проекту (B), яка знаходиться в іншому проти рішення.

Мені ще належить зрозуміти, як я можу ефективно налагоджувати бібліотеку класів від B під час запуску програми з проекту А. Чи є щось, що я повинен увімкнути в проекті B, наприклад, інформація про налагодження і т. Д., Щоб я міг ввійти в час налагодження з A?

Заздалегідь спасибі.

Відповіді:


202

Спробуйте вимкнути Just My Code (JMC).

  • Інструменти -> Опції -> Відладчик
  • Зніміть прапорець "Увімкнути лише мій код"

За замовчуванням налагоджувач намагається обмежити погляд на світ кодом, який міститься лише у вашому рішенні. Це часом справді нереально, але коли ви хочете налагодити код, який не знаходиться у вашому рішенні (як це у вашій ситуації), вам потрібно відключити JMC, щоб побачити його. Інакше код трактуватиметься як зовнішній і значною мірою прихований від вашого перегляду.

EDIT

Коли ви порушите свій код, спробуйте наступне.

  • Налагодження -> Windows -> Модулі
  • Знайдіть DLL для проекту, який вас цікавить
  • Клацніть правою кнопкою миші -> Завантажити символи -> Виберіть Шлях до .PDB для іншого проекту

2
конкретний прапорець уже знято. Що я помітив, це те, що він дійсно входить у метод зовнішньої бібліотеки, але він переступає, коли я намагаюся викликати метод, який є частиною інтерфейсу.
Костянтинос

Можливо, вам доведеться перейти до властивостей DLL та переконатися, що для параметра Copy Local встановлено значення True. В іншому випадку модулі не зможуть знайти .pdb для вашої довідки.
Брайан Рейнер

Просто Мій код не має жодного значення (я можу перейти до зовнішнього коду, навіть якщо це ввімкнено), але пошук модуля в налагоджувачі допомагає.
Оператор

3
Файл відповідних символів не знайдено в цій папці.
Крістін

1
Якщо у вас немає файлів PDB для посиланого модуля, ReSharper можна використовувати для декомпіляції бінарних файлів, використовуючи опцію "Завантажити символи з ReSharper Deecompiler" у меню правої кнопки миші в меню Налагодження / Windows / Модулі. дуже потужний.
Еміласт

12

Це клопоче мене вже деякий час. Що зазвичай я роблю, це відновлення моєї зовнішньої бібліотеки в режимі налагодження, після чого скопіюйте і .dll, і .pdb файл у відро для мого веб-сайту. Це дозволяє мені перейти до ліберального коду.


10

Припустимо шлях

Проект A

C:\Projects\ProjectA

Проект B

C:\Projects\ProjectB

і dll ProjectB знаходиться в

C:\Projects\ProjectB\bin\Debug\

Для налагодження ProjectBз ProjectA, виконайте наступне

  1. Копіювання B«s длл з DLL файли .PDBв ProjectA" и упорядника каталогу.
  2. Тепер налагодження ProjectA. Коли код доходить до тієї частини, де вам потрібно викликати метод DLL або події тощо під час налагодження, натисніть, F11щоб перейти до коду dll.

ПРИМІТКА: НЕ ПРОМИСЛУЙТЕ КОПУВАТИ ФАЙЛ .PDB


5

Я запускаю два екземпляри візуальної студії - один для зовнішнього dll і один для основного додатка.
У властивості проекту зовнішнього dll встановіть наступне:

Події побудови:

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

Налагоджувати:

  • Запуск зовнішньої програми: C:\<path-to-main>\bin\debug\<AppName>.exe

  • Робочий довідник C:\<path-to-main>\bin\debug

Таким чином, кожен раз, коли я будую зовнішній dll, він оновлюється в каталозі основного додатка. Якщо я натиснув налагодження в проекті зовнішнього DLL - основний додаток запускається, але налагоджувач потрапляє лише на точки прориву у зовнішньому dll. Якщо я потрапив на налагодження з головного проекту, основний додаток працює з останнім часом вбудованим зовнішнім dll, але зараз налагоджувач лише в основному проекті потрапляє на точки прориву.

Я усвідомлюю, що один налагоджувач зробить роботу для обох, але мені простіше тримати обох прямо.


1

[за словами Мартіна Беккета, хлопця, який надіслав мені цю відповідь]

Ви можете встановити налагодження у зовнішній бібліотеці.

На вкладці "Налаштування проекту" знайдіть "візуальні каталоги студії", у полі "вихідний код" включіть шлях до джерел openCV. Потім переконайтеся, що .pdb файли для кожного DLL налагодження знаходяться в тій самій директорії, що і dll.


0

У мене виникло подібне питання, оскільки мої точки прориву в проекті (B) не потрапляли. Моє рішення полягало в тому, щоб відновити проект (B), а потім налагодити проект (A) у міру необхідності оновлення dlls.

Візуальна студія повинна дозволяти вам налагоджувати у зовнішній бібліотеці.


0

NuGet посилання

Припустимо, -Project_A (виробляє project_a.dll) -Project_B (виробляє project_b.dll) та Project_B посилання на Project_A пакетами NuGet, а потім просто скопіюйте project_a.dll, project_a.pdb у папку Project_B / Packages. По суті, його слід скопіювати в / bin.

Тепер налагоджуємо Project_A. Коли код доходить до тієї частини, де вам потрібно викликати метод DLL або події тощо під час налагодження, натисніть F11, щоб перейти до коду dll.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.