Nano Hash - криптовалюты, майнинг, программирование

Как отлаживать проекты внешней библиотеки классов в Visual Studio?

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

Мне еще предстоит понять, как я могу эффективно отлаживать библиотеку классов из B при запуске программы из проекта A. Есть ли что-то, что я должен включить в проекте B, например информацию об отладке и т. Д., Чтобы я мог войти во время отладки из A?

Заранее спасибо.


Ответы:


1

Попробуйте отключить Just My Code (JMC).

  • Инструменты ›Параметры› Отладка
  • Снимите флажок Включить только мой код

По умолчанию отладчик пытается ограничить представление мира кодом, который содержится только в вашем решении. Иногда это действительно полезно, но если вы хотите отладить код, которого нет в вашем решении (как ваша ситуация), вам нужно отключить JMC, чтобы увидеть его. В противном случае код будет рассматриваться как внешний и в значительной степени скрыт от вашего взгляда.

ИЗМЕНИТЬ

Если ваш код не работает, попробуйте следующее.

  • Отладка ›Windows› Модули
  • Найдите DLL для интересующего вас проекта
  • Щелкните правой кнопкой мыши ›Загрузить символы› Выберите путь к .PDB для другого вашего проекта
17.03.2009
  • конкретный флажок уже был снят. Однако я заметил, что он входит в метод внешней библиотеки, но переходит, когда я пытаюсь вызвать метод, который является частью интерфейса. 17.03.2009
  • Возможно, вам потребуется перейти к свойствам библиотеки DLL и убедиться, что для параметра Copy Local установлено значение True. В противном случае модули не смогут найти .pdb для вашей справки. 25.11.2014
  • Just My Code, похоже, не имеет никакого значения (я могу перейти к внешнему коду, даже если он включен), но поиск модуля в отладчике помогает. 31.12.2015
  • Соответствующий файл символов не найден в этой папке. 23.02.2017
  • Если у вас нет файлов PDB для указанного модуля, ReSharper можно использовать для декомпиляции двоичных файлов с помощью параметра «Загрузить символы с помощью ReSharper Deecompiler» в контекстном меню в Debug / Windows / Modules. очень могущественный. 12.01.2018
  • @Christine Если вы обнаружите, что соответствующий файл символов не найден в этой папке. затем найдите ссылку в проекте, удалите ее, создайте источники ссылки локально и сделайте ссылку на выходную dll. С этой dll, если она собирается локально, приходит файл PDB, который теперь выбирается автоматически. Поэтому просто для целей отладки вы временно меняете ссылку, 12.07.2019
  • Есть ли другой вариант, кроме установки ReSharper для загрузки символов с помощью ReSharper Deecompiler или самостоятельной сборки? 05.04.2021

  • 2

    Предположим, что путь

    Проект A

    C:\Projects\ProjectA
    

    Проект B

    C:\Projects\ProjectB
    

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

    C:\Projects\ProjectB\bin\Debug\
    

    Чтобы выполнить отладку в ProjectB из ProjectA, выполните следующие действия.

    1. Скопируйте dll B с .PDB dll в каталог компиляции ProjectA.
    2. Теперь отлаживайте ProjectA. Когда код достигнет той части, где вам нужно вызвать метод DLL или события и т. Д. Во время отладки, нажмите F11, чтобы войти в код DLL.

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

    27.01.2015

    3

    Некоторое время это меня беспокоит. Обычно я перестраиваю свою внешнюю библиотеку в режиме отладки, а затем копирую файлы .dll и .pdb в корзину моего веб-сайта. Это позволяет мне войти в код библиотеки.

    08.05.2012
  • Вы случайно не нашли лучшее решение для этого за последние 8 лет? 05.04.2021

  • 4

    Я запускаю два экземпляра Visual Studio - один для внешней библиотеки 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, но теперь отладчик достигает точек останова только в основном проекте.

    Я понимаю, что один отладчик выполнит работу за оба, но я считаю, что таким образом проще поддерживать оба эти правила.

    08.08.2013

    5

    [по словам Мартина Беккета, парня, который прислал мне этот ответ]

    Вы можете выполнять отладку во внешней библиотеке.

    На вкладке настроек проекта найдите «каталоги Visual Studio» в поле «исходный код» укажите путь к источникам openCV. Затем убедитесь, что файлы .pdb для каждой отладочной dll находятся в том же каталоге, что и dll.

    19.09.2011

    6

    У меня была аналогичная проблема, так как мои точки останова в проекте (B) не были достигнуты. Мое решение заключалось в том, чтобы перестроить проект (B), а затем отладить проект (A), так как библиотеки DLL необходимо обновить.

    Visual Studio должна позволять вам выполнять отладку во внешней библиотеке.

    19.07.2018

    7

    Ссылки 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.

    29.01.2020

    8

    Самый быстрый способ сделать это на разовой основе - открыть файл Proj B непосредственно в экземпляре Visual Studio, в котором вы редактируете и запускаете Project A (File = ›Open =› File). Добавлять файл в раствор не нужно. Просто открыв его в редакторе, вы сможете создавать точки останова прямо в файле Project B.

    20.05.2021
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..