В последнее время столкнулся с этой проблемой ... При отладке приложения в VS.Net 2005 точки останова не подключаются. Ошибка указывает на то, что скомпилированный код не совпадает с запущенной версией, и поэтому существует несоответствие, которое приводит к отключению точки останова.
Очищенное решение всего bin-файла и повторная компиляция не помогают. Это происходит не только с одной коробкой или человеком.
Добавлено примечание: Это решение находится в TFS для управления версиями. Если я удалю свой локальный репозиторий TFS и получу его из системы управления версиями с нуля, ИНОГДА проблема исчезнет. Я также попытался удалить и переустановить Visual Studio. Это тоже ИНОГДА помогает. Тот факт, что оба из них иногда работают, указывает на то, что проблема не вызвана напрямую ни одним из них.





В «Параметры» -> «Отладка» вы можете снять флажок «требовать, чтобы исходные файлы точно соответствовали исходной версии», что может помочь.
Установлена ли конфигурация сборки на Release?
У вас есть ссылка на внешнюю DLL, в которой установлена точка останова?
Он установлен на DEBUG, и нет внешних DLL - все они локальные проекты.
AviewAnew - уже сделал это по просьбе технического специалиста MS. Не помогло снятие флажка требовать, чтобы исходный файл соответствовал версии.
Майк L - конфигурация установлена на DEBUG, и теперь есть внешняя DLL. Использование всех локальных проектов, кроме ссылок на фреймворки.
Вы уверены, что файлы .pdb находятся в той же папке, что и исполняемый файл, который вы запускаете? Убедитесь, что дата последнего изменения обоих файлов совпадает и VS прикреплен к этому exe (и никакому другому).
Вы создаете проект DLL, который используется внешним исполняемым файлом? Вы используете .NET или COM?
Если вы используете COM-взаимодействие с .NET, версии DLL могут иногда вызывать проблемы, когда исполняемый файл загружает DLL. Например, если ваша ежедневная сборка приводит к увеличению номера сборки, но ваша отладочная DLL имеет меньший номер сборки, исполняемый файл не будет загружать отладочную DLL. Чтобы исправить это, вам нужно будет просканировать каталог HKEY_CLASSES_ROOT \ CLSID в вашем реестре на предмет GUID / CLSID вашего компонента .NET / COM. В InProc32 удалите записи с более высоким номером версии, чем ваша DLL отладки.
Опять же, вышесказанное относится только к библиотекам DLL взаимодействия .NET + COM.
это .Net, и я не создаю проект DLL, потребляемый внешним exe.
Есть ли у вас этап пост-сборки, который каким-либо образом затрагивает ваши двоичные файлы? Если это так, это может сбить с толку отладчик и создать впечатление, что ваши символы не соответствуют вашему exe / dll из-за неправильного размера / временной метки.
В прошлом я иногда обнаруживал, что отключение оптимизаций компилятора может решить «недостающие» точки останова, поскольку оптимизатор определил (правильно), что код не вызывается, и удалил их из скомпилированных версий.
Это действительно похоже на другую проблему, но, возможно, стоит убедиться, что оптимизация отключена в режиме отладки. [Проект / Свойства, вкладка Настройки сборки]
Эти точки останова определенно должны быть достигнуты - отключение оптимизаций компилятора не влияет.
У меня была аналогичная проблема в прошлом.
Это было решено путем закрытия Visual Studio и удаления временных файлов сборки, созданных ASP.NET для проекта в папке «C: \ WINDOWS \ Microsoft.NET \ Framework {framework version} \ Temporary ASP.NET Files», повторного открытия проекта.
Прочтите разместить здесь и комментарии, чтобы решить эту проблему.
Это не проект ASP.Net, хотя у него есть веб-службы (это приложение smartclient). Однако точки останова не работают не только на стороне веб-сервиса, но и в exe и связанных с ними dll.
Уверены, что в коде нет атрибутов Debug, препятствующих отладке кода, таких как DebuggerHidden или DebuggerStepThrough, в любой точке приложения?
Нет, ничего подобного здесь нет, хотя вы делаете несколько действительно хороших предложений. 8)
Можете ли вы пройти через свой код до строки точки останова вместо того, чтобы запускать и ждать, пока она сработает? Можете ли вы вообще пройти через код?
Точки останова не работали, и все выглядело так, как если бы код был скомпилирован в режиме RELEASE.
Возможно, это предложение может помочь:
Я обнаружил, что иногда необходимо:
Источник: Точка останова в настоящее время не будет достигнута. Для этого документа не загружены символы.
http://dpotter.net/Technical/2009/05/upgrading-to-ie8-breaks-debugging-with-visual-studio-2005/
Интересно и полезно, но не то, что вызвало проблему, которую я видел - IE8 не был установлен (даже не думаю, что он был доступен в то время). Тем не менее - хорошая ссылка, спасибо!
Сделал это по указанию М.С., и это не помогло.