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





Не уверен, что это так, но «Инструменты> Параметры> Отладка> Общие: Включить только мой код» - возможно. (Я предпочитаю всегда не ставить этот флажок.)
Одна вещь, которую следует проверить, - это то, что ваша вспомогательная сборка проекта не была установлена в GAC. Откройте командную строку и выполните следующее, чтобы убедиться ...
гакутил / л AssemblyName
Вам необходимо убедиться, что в поддерживаемых проектах есть файлы pdb, иначе Visual Studio не будет иметь необходимой информации для пошагового выполнения кода.
Пара возможностей:
Есть флажок, чтобы войти в «только мой код». Его цель - сделать так, чтобы вы не могли войти в код Microsoft Framework (если только вы не снимете флажок).
Вы можете попробовать перекомпилировать вспомогательный код, чтобы убедиться, что код, который вы отлаживаете, точно соответствует файлу кода, который вы просматриваете. VS заботится об этом и отключит точку останова, если вы поместите ее в файл кода, версия которого не совпадает. Также убедитесь, что файл PDB находится в том же каталоге, что и DLL.
Оказывается, сборку нужно было скопировать в GAC, прежде чем ее можно было отлаживать. В параметре отладки «Только мой код» есть возможность подавить ошибку, если у вас нет кода пользователя, и она подавляла следующую ошибку:
The Following mobile was built either with optimizations enabled or without debug information. (Module name and path) To debug this module, change its build configuration to Debug mode.
Поскольку я создавал его в конфигурации отладки, я поискал это сообщение об ошибке и получил следующее:
Проблема решена. Я не знаю, почему это должно быть в GAC, чтобы я мог участвовать в проекте, но это так. Я не спрашиваю почему, я просто спрашиваю как, а потом делаю это ...
Вероятно, это глупый вопрос, но как скопировать dll (или любой файл) в C: Windows / Assembly в Windows7? Перетаскивание, копирование и вставка недоступны для этого конкретного каталога
У меня описана та же проблема, а также 4 проекта в решении, но я понятия не имею, что такое GAC и как решить эту проблему.
Если у вас есть исходный код библиотеки DLL, в которую вы пытаетесь войти, сделайте следующее:
Теперь установите точку останова и отладьте код .. Вы сможете перейти к коду.
Причина проблемы заключается в том, что ваша программа все еще ссылается на старую dll (без исходного кода), поскольку она была добавлена в ваш проект в качестве ссылки. После того, как вы удалите эту dll и добавите проект (исходный код dll) dll, Visual Studio сможет войти в ваш код.
В Visual Studio 2013 один из способов вызвать такое поведение - установить для конфигурации сборки значение Release.
.
Верните его в Debug и посмотрите, поможет ли это.

Хм, это заставило мои контрольные точки работать дальше, объяснение почему?
Боже мой, эта проблема стоила мне утра. Спасибо за это.