Включить и отключить отладку «Шаг в» для определенного проекта в решении Visual Studio - PullRequest
21 голосов
/ 21 октября 2008

У меня есть решение Visual Studio с четырьмя проектами на C #. Я хочу войти в код поддерживающего проекта в решении из моего основного проекта, но когда я использую клавишу «Шаг в», он просто пропускает вызов в этот другой проект. Я установил контрольные точки в поддерживающем проекте, и они игнорируются, и я не могу заставить себя вмешаться в какие-либо ссылки на этот проект.

Все настроено для компиляции как «Отладка», и я видел, как Visual Studio предупреждала меня, что мои контрольные точки не будут достигнуты раньше - в этом случае этого не происходит. Это похоже на то, как будто мой код будет отлаживаться, но затем во время выполнения где-то есть настройка, которая говорит Visual Studio не проходить через код в этом проекте. Все остальные проекты в моих решениях отлаживаются без проблем.

Какой флажок я установил, чтобы вызвать такое поведение?

ОБНОВЛЕНИЕ ДЛЯ ЯСНОСТИ : опция «Просто мой код» в настоящее время отключена. Кроме того, поскольку код принадлежит проекту в том же решении, я не думаю, что здесь применяется опция «Просто мой код». Я думал, что это применимо только к предварительно скомпилированному коду, для которого у меня нет исходного кода, но так как у меня есть источник в моем проекте, я не думаю, что этот параметр имеет какой-либо эффект.

Ответы [ 7 ]

14 голосов
/ 21 октября 2008

Не уверен, что это так, но «Инструменты> Параметры> Отладка> Общие: Включить только мой код» возможно. (Я предпочитаю всегда оставлять это без проверки.)

13 голосов
/ 21 октября 2008

Оказывается, что сборку нужно было скопировать в GAC, прежде чем ее можно было отлаживать. Под опцией отладки «Просто мой код» есть опция для подавления ошибки, если у вас нет кода пользователя, и она подавляла следующую ошибку:

Следующий мобильный был построен либо с включенной оптимизацией или без отладочная информация. (Название модуля и путь) Чтобы отладить этот модуль, измените его собрать конфигурацию в режиме отладки.

Поскольку я собирал его в конфигурации отладки, я искал это сообщение об ошибке и получил следующее:

http://claytonj.wordpress.com/2008/01/04/the-following-module-was-built-either-with-optimizations-enabled-or-without-debug-information/

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

7 голосов
/ 21 октября 2008

Следует проверить, что ваша вспомогательная сборка проекта не была установлена ​​в GAC. Откройте командную строку и выполните следующую команду, чтобы убедиться ...

gacutil / l AssemblyName

4 голосов
/ 21 октября 2008

Необходимо убедиться, что во вспомогательных проектах есть файлы pdb, иначе Visual Studio не будет иметь необходимой информации для пошагового выполнения кода.

3 голосов
/ 21 октября 2008

Пара возможностей:

  • Есть флажок для перехода к «просто мой код». Его цель - сделать так, чтобы вы не могли войти в код Microsoft Framework (если не решите, сняв флажок).

  • Вы можете попробовать перекомпилировать поддерживающий код, чтобы убедиться, что код, который вы отлаживаете, точно соответствует файлу кода, который вы просматриваете. VS действительно заботится об этом и отключит точку останова, если вы поместите ее в файл кода, чья версия не совпадает. Также убедитесь, что файл PDB находится в том же каталоге, что и DLL.

2 голосов
/ 20 апреля 2015

В Visual Studio 2013 одним из способов вызвать такое поведение является установка конфигурации сборки на Release.
Верните его на Debug и посмотрите, поможет ли это.

enter image description here

2 голосов
/ 23 марта 2012

Если у вас есть исходный код для библиотеки DLL, в которую вы пытаетесь войти, выполните следующие действия:

  1. Нажмите на проект, в котором эти dll добавлены как ссылки, и удалите их.
  2. Добавить проект (ы), соответствующий dll (s) к решению
  3. Щелкните правой кнопкой мыши по проекту -> Добавить ссылку -> Выберите вновь добавленные проекты.

Теперь установите точку останова и отладьте код. Вы сможете войти в код.

Причина проблемы заключается в том, что ваша программа все еще ссылается на старую DLL (без исходного кода), поскольку она была добавлена ​​в ваш проект в качестве ссылки. Как только вы удалите эту dll и добавите Project (Исходный код dll) dll, Visual Studio сможет войти в ваш код.

...