Ответ 1
Одна вещь, которую нужно проверить, заключается в том, что ваша поддерживающая проектная сборка не установлена в GAC. Откройте командную строку и выполните следующие действия, чтобы убедиться, что...
gacutil/l assemblyName
У меня есть решение Visual Studio с четырьмя С# проектами. Я хочу войти в код поддерживающего проекта в решении из моего основного проекта, но когда я использую ключ "Шаг в", он просто пропускает вызов в этот другой проект. Я установил точки останова в поддерживающем проекте, и они игнорируются, и я не могу в течение всей жизни заставить его войти в любые ссылки на этот проект.
Все настроено на компиляцию как "Отладка", и я видел, как Visual Studio предупреждает меня, что мои точки останова не пострадают раньше - в этом случае этого не происходит. Это похоже на то, что мой код будет отлаживаться, но затем во время выполнения есть параметр где-то, что говорит Visual Studio не проходить через код в этом проекте. Все остальные проекты в моих решениях отлаживаются без проблем.
Какую ячейку я проверил, чтобы вызвать это поведение?
UPDATE FOR CLARITY. В настоящее время отключена опция "Только мой код". Кроме того, поскольку код принадлежит проекту в моем же решении, я не думаю, что здесь применяется опция "Только мой код". Я думал, что он применяется только к предварительно скомпилированному коду, для которого у меня не было источника, но поскольку у меня есть источник в моем проекте, я не думаю, что этот параметр имеет какой-то эффект.
Одна вещь, которую нужно проверить, заключается в том, что ваша поддерживающая проектная сборка не установлена в GAC. Откройте командную строку и выполните следующие действия, чтобы убедиться, что...
gacutil/l assemblyName
Оказывается, сборку нужно было скопировать в GAC, прежде чем ее можно было отладить. В опции отладки "Только мой код" есть возможность подавить ошибку, если у вас нет кода пользователя, и она подавляла следующую ошибку:
Следующий мобильный был построен либо с включенными или без оптимизации отладочная информация. (Имя модуля и path) Чтобы отладить этот модуль, измените его постройте конфигурацию в режиме отладки.
Поскольку я создавал его в конфигурации Debug, я искал это сообщение об ошибке и получил следующее:
Проблема решена. Я не знаю, почему это должно быть в GAC, чтобы я мог войти в проект, но это так. Я не спрашиваю, почему, я просто спрашиваю, как, а потом я это делаю...
Не уверен, что это он, но "Инструменты" > "Параметры" > "Отладка" > "Общие": "Включить только мой код". (Я предпочитаю всегда оставлять это без внимания.)
Вам нужно убедиться, что поддерживающие проекты имеют файлы pdb или Visual Studio не будет иметь необходимой информации для прохождения кода.
Несколько возможностей:
Существует флажок, чтобы войти в "только мой код". Его цель состоит в том, чтобы сделать так, чтобы вы не могли войти в код Microsoft Framework (если вы не решите, сняв флажок).
Вы можете попробовать перекомпилировать поддерживающий код, чтобы убедиться, что код, который вы отлаживаете, точно соответствует коду, на который вы смотрите. VS действительно заботится об этом и отключит точку останова, если вы поместите ее в файл кода, версия которого не соответствует. Кроме того, убедитесь, что файл PDB находится в том же каталоге, что и DLL.
Если у вас есть исходный код для dll, в который вы пытаетесь войти, выполните следующие действия:
Теперь установите точку прерывания и отлаживайте код. Вы сможете войти в код.
Причина проблемы заключается в том, что вы все еще ссылаетесь на старую dll (без исходного кода), поскольку она была добавлена в ваш проект в качестве ссылки. Как только вы удалите эту DLL и добавите проект (исходный код dll) в dll, Visual Studio сможет войти в ваш код.
В Visual Studio 2013 одним из способов вызвать это поведение является настройка конфигурации сборки на Release
.
Верните его на Debug
и посмотрите, поможет ли это.