У меня есть два решения в моей рабочей области, скажем, A и B.
Решение A - более старый проект, который я закончил писать некоторое время назад. В решении B мне нужно использовать некоторые классы из решения A. Для этого я добавляю ссылку на dll одного из проектов в решении A.
Проблема в том, когда я пытаюсь отладить. Я хочу иметь возможность войти в код А. Visual Studio не может загрузить код для этих классов («Нет исходного кода, доступного для текущего местоположения.»), И я могу только просматривать разборку, которая бесполезна.
Единственный известный мне способ отладки классов из решения A - это запустить решение B, отсоединить все процессы (в пункте меню «Отладка») и подключить процесс из решения A.
Тем не менее, это очень неудобно, и я могу только отладить A ИЛИ B сразу.
Есть ли способ разрешить войти в код ссылочных dll (для которых у меня есть исходный код)?
Решение: Моя ошибка заключалась в том, что я думал, что проект может быть только частью одного решения. Фактически, проект может быть частью любого количества решений.
Когда вам нужно сослаться на старый проект, вы должны просто добавить проект в решение. Это можно сделать, щелкнув правой кнопкой мыши новое решение в обозревателе решений> Добавить> Существующий проект.
Затем вы сможете добавить ссылку на проект. Как писали другие, вам, вероятно, следует полностью избегать использования dll-ссылок на ваш собственный код (или другой код, который вам может потребоваться изменить и отладить).
Очень хорошая ссылка на то, как должны быть разработаны решения, может быть найдена в MSDN .
Ответы:
Если у вас есть ссылка на проект , он должен работать немедленно.
Если это ссылка на файл (dll), необходимо, чтобы символы отладки (файл "pdb") находились в той же папке, что и dll. Убедитесь, что ваши проекты генерируют символы отладки (свойства проекта => Build => Advanced => Output / Debug Info = full); и если вы скопировали dll, поместите в него pdb.
Вы также можете загрузить символы непосредственно в IDE, если вы не хотите копировать какие-либо файлы, но это больше работы.
Самый простой вариант - использовать ссылки на проекты!
источник
Я была такая же проблема. Он то, что я нашел:
1) убедитесь, что все проекты используют одну и ту же платформу (это очень важно!)
2) в меню «Инструменты / Параметры»> «Отладка»> «Общие» убедитесь, что «Включить только мой код (только управляемый)» НЕ отмечено
3) в меню Инструменты / Параметры> Отладка> Символы очистите все кэшированные символы, снимите флажок и удалите все расположения папок в списке «Расположение файлов символов (.pdb)», кроме стандартного «Серверы символов Microsoft», но все же снимите его. Также удалите все статические пути в текстовом поле «Кэшировать символы в этом каталоге». Нажмите кнопку «Очистить кэш символов». Наконец, убедитесь, что установлен переключатель «Только указанные модули».
4) в меню Build / Configuration Manager для всех проектов убедитесь, что конфигурация находится в режиме отладки.
источник
Еще один момент, который нужно иметь в виду, убедитесь, что указанные библиотеки не установлены в GAC. После тестирования я установил свои библиотеки в GAC для тестирования на уровне системы. Позже, когда мне снова пришлось отлаживать свой код, я не мог перейти к ссылочным сборкам, пока не удалил их из GAC.
источник
Шаг 1: Зайдите в Инструменты -> Опция -> Отладка
Шаг 2: снимите флажок Включить только мой код
Шаг 3: Снимите флажок Требовать, чтобы исходный файл точно совпадал с исходной версией
Шаг 4: Снимите флажок Шаг над свойствами и операторами
источник
У меня были
*.pdb
файлы в той же папке и я использовал параметры от Ариндама , но это все равно не работало. Оказывается, мне нужно было включить « Включить отладку собственного кода», которую можно найти в разделе « Свойства проекта»> «Отладка» .источник
Если вы хотите установить точку останова в исходном коде DLL, на которую указывает ссылка, сначала убедитесь, что у вас есть доступный для нее файл pdb. Затем вы можете просто открыть соответствующий файл исходного кода и установить там точку останова. Исходный файл не обязательно должен быть частью вашего решения. Как объяснено в разделе Как установить точку останова в ссылочном коде в Visual Studio?
Вы можете просмотреть свои точки останова в окне точек останова, доступном через Debug -> Windows -> Breakpoints.
Этот подход имеет то преимущество, что вам не нужно добавлять существующий проект в ваше решение только для целей отладки, поскольку его исключение сэкономило мне много времени на сборку. Очевидно, что создание решения с использованием только одного проекта намного быстрее, чем создание решения с большим количеством проектов.
источник
Убедитесь, что ваша DLL не зарегистрирована в GAC. Visual Studio будет использовать версию из GAC и, вероятно, не будет содержать отладочной информации.
источник
Я не хочу включать проект внешней библиотеки классов в некоторые из своих решений, поэтому я перехожу к сборкам, которые потребляю другим способом.
В моих решениях есть каталог «Общие сборки», содержащий мои собственные библиотеки DLL из других проектов. Библиотеки DLL, на которые я ссылаюсь, также имеют сопутствующие файлы PDB для отладки.
Чтобы отлаживать и устанавливать точки останова, я устанавливаю точку останова в источнике приложения-потребителя, где я вызываю метод или конструктор из сборки, а затем выполняю INTO (F11) вызов метода / конструктора.
Отладчик загрузит исходный файл сборки в VS, и в этой точке можно установить новые точки останова внутри сборки.
Это непросто, но работает, если вы не хотите включать ссылку на новый проект и вместо этого просто хотите ссылаться на общую сборку.
источник
Это должно работать. Раньше я отлаживал файл .exe и dll одновременно! Я предлагаю: 1) включить путь к dll в ваш проект B, 2) затем скомпилировать в отладке вашего проекта A 3) контролировать, чтобы путь указывал на файлы dll и de pdb .... 4) После этого вы начните отладку проекта B, и если все в порядке, вы сможете отлаживать оба проекта!
источник
Самый простой способ, который я нашел с помощью VisualStudio 2019 для отладки внешней библиотеки, на которую вы ссылаетесь в NuGet, - это выполнить следующие шаги:
Инструменты> Параметры> Отладка> Общие> Снимите флажок "Включить только мой код"
Перейдите в Обозреватель сборок> Открыть из кэша пакетов NuGet
Введите имя пакета NuGet, который вы хотите отладить, в поле поиска и нажмите «ОК».
В проводнике сборки щелкните правой кнопкой мыши импортированную сборку и выберите «Создать Pdb».
Выберите настраиваемый путь, в котором вы хотите сохранить файл .PDB, и структуру, для которой вы хотите, чтобы он был сгенерирован.
Скопируйте файл .PDB из созданной папки в папку отладки, и теперь вы можете установить точки останова в коде библиотеки этой сборки.
источник