В командном проекте, над которым я работаю, установка точки останова в файле (скажем IdeasController.cs
) приведет к неустойчивому отладчику, если в решении будет другой файл с тем же именем. Я воспроизвел проблему на нескольких рабочих станциях разработчиков.
Пример
Я установил точку останова в IdeasController.cs
в нашем веб-API:
В нашем отдельном веб-проекте MVC 4 существует еще один файл с именем IdeasController.cs
. На скриншоте ниже отладчик показывает исходный код Api->IdeasController
, но выделение строки соответствует структуре кода Web->IdeasController
. Точка останова дублируется, причем одна из них находится в середине блока комментариев.
В окне Breakpoint отображается точка останова в обоих файлах одновременно:
На некоторых рабочих станциях отладчик выполняет правильные строки (независимо от выделения строки); на других он бодро проходит через нерелевантные строки (включая комментарии и пробелы). Я предполагаю, что это зависит от того, какой исходный файл он отображает.
Что я пробовал
Я трал Интернет. Такая проблема возникает, когда существует несоответствие между отладочным файлом (*.pdb
), исходным файлом и скомпилированным кодом. Существует много возможных причин: дублировать имена файлов (которые могут смутить отладчик [5]), устаревший проект создавать файлы, недействительный кэш решений или некорректную конфигурацию сборки.
Это решения, которые я нашел и попробовал:
- Проверьте мою конфигурацию сборки.
- Убедитесь, что проект не создан в режиме выпуска.
- Убедитесь, что не поддерживают оптимизацию кода.
- Убедитесь, что модуль отладки проекта загружен правильно. (Начала отладку проекта и проверила
Debug
>Windows
>Modules
. Обе сборки перечислены, не оптимизированы и имеют статус символа "Символы загружены".)
- Reset метаданные отладки и кеш Visual Studio.
- Закрыл Visual Studio и удалил файл кэша решения (
*.suo
). [1] - Удаляет каждый вывод сборки проекта (папки
bin
иobj
). (Для справки в будущем: откройте папку решений в проводнике Windows и введите ее в поле поиска: "type:folder AND (name:=bin OR name:=obj)
". - Удалена папка кэша сборки (
C:\Documents and Settings\<user>\Local Settings\Application Data\dl3
). [2] [3]
- Закрыл Visual Studio и удалил файл кэша решения (
Ни один из них не имел никакого эффекта. Я могу переименовать один из файлов (без переименования класса), чтобы временно решить проблему, но это далеко не идеально.
Где я сейчас
Страница 14 моего последнего поиска Google. Предложения будут высоко оценены.:)