Подтвердить что ты не робот

Включить и отключить отладку "Шаг за шагом" в определенном проекте в решении Visual Studio

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

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

Какую ячейку я проверил, чтобы вызвать это поведение?

UPDATE FOR CLARITY. В настоящее время отключена опция "Только мой код". Кроме того, поскольку код принадлежит проекту в моем же решении, я не думаю, что здесь применяется опция "Только мой код". Я думал, что он применяется только к предварительно скомпилированному коду, для которого у меня не было источника, но поскольку у меня есть источник в моем проекте, я не думаю, что этот параметр имеет какой-то эффект.

4b9b3361

Ответ 1

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

gacutil/l assemblyName

Ответ 2

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

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

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

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

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

Ответ 3

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

Ответ 4

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

Ответ 5

Несколько возможностей:

  • Существует флажок, чтобы войти в "только мой код". Его цель состоит в том, чтобы сделать так, чтобы вы не могли войти в код Microsoft Framework (если вы не решите, сняв флажок).

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

Ответ 6

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

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

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

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

Ответ 7

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

enter image description here