"В настоящий момент точка останова не будет удалена. Исходный код отличается от исходной версии". Что это значит?

При отладке в Visual Studio иногда я добавляю точку останова, но это пустое, а VS говорит: "В настоящий момент точка останова не будет удалена. Исходный код отличается от исходной версии". Очевидно, это мешает мне отлаживать.

Что означает это сообщение? Какая оригинальная версия? Если я только что открыл решение и не внесло никаких изменений в код, как может быть "оригинальная версия"?

+473
18 мар. '10 в 10:01
источник поделиться
45 ответов
  • 1
  • 2

Как говорится, "исходный код отличается от исходной версии".

Щелкните правой кнопкой мыши папку проекта внутри проводника решений и выберите Clean. Создайте новую версию проекта, и точка останова будет работать снова!

+250
09 нояб. '10 в 13:52
источник

Связанные вопросы


Похожие вопросы

Если вы отменили проект DLL в конфигурации сборки Debug, ваш новый код никогда не будет создан!

Перейдите к Build --> Configuration Manager ... (в VS2010) и проверьте, проверен ли проект с кодом, который вы пытаетесь отладить, для текущей конфигурации сборки.

+120
13 янв. '11 в 22:01
источник

Для меня это было во время работы над проектом WebSite. После очистки этих временных папок я получил правильные ошибки компилятора:

  • C:\Documents and Settings\%username%\AppData\Local\Temp\Temporary ASP.NET Files
  • C:\windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files

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

+40
09 янв. '12 в 18:32
источник

Вы когда-нибудь делали это?

Вы хотите продолжить и запустить последнюю успешную сборку?

Если вы отметили поле и нажали "Да", вы получите последнюю успешную сборку, даже если ваш проект не компилируется. Это означает, что всякий раз, когда вы устанавливаете точку останова, вы получите эту ошибку.

Попробуйте изменить это значение:

  • Инструменты
    • Параметры
      • Проекты и решения
        • Сборка и запуск
          • При запуске при возникновении ошибок сборки или развертывания: Не запускать
+36
18 мар. '10 в 10:11
источник

Перейдите к

  • Инструменты
    • Параметры
      • Debugging
        • Общие

Снимите флажок Требовать, чтобы исходные файлы соответствовали исходной версии

+28
09 янв. '12 в 4:17
источник

Выберите Отладка в Конфигурация решений, а не Отпустить

screenshot of menu

+27
23 янв. '13 в 12:48
источник

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

Например, если у вас есть несколько сборок, и вы в настоящее время пытаетесь взломать одну из сборочных сборок, CLR будет обрабатывать решение сборки, которое может загрузить другой файл сборки, чем тот, на который вы ссылались в проекте.

+24
18 мар. '10 в 11:14
источник

Закрытие Visual Studio и повторное открытие решения могут устранить проблему, то есть ошибку в самой IDE (я запускаю VS2010).

Если у вас несколько экземпляров Visual Studio, вам нужно только закрыть экземпляр, запускающий решение с проблемой.

+24
25 нояб. '13 в 21:57
источник

Новый способ решения этой проблемы появился в Visual Studio 2017 с 15.3.1 по 15.3.5. Если вы используете EditorConfig, опция charset=utf8 вызывает эти симптомы. Команда VS воспроизвела это и говорит, что работает над этим.

Итак, одно из исправлений - закомментировать строку charset=utf8 в файле .editorconfig.

Изменение: это должно быть исправлено с VS 15.5.

+19
03 окт. '17 в 15:51
источник

Это часто случается также, если вы используете ссылки на файлы для двоичных файлов (вместо ссылок на проекты на код в вашем проекте), а скомпилированный двоичный файл, который вы ссылаетесь, выпадает из синхронизации с соответствующим исходным кодом на вашем компьютере. Это может произойти из-за того, что вы загрузили новую версию двоичного кода из исходного элемента управления без нового исходного кода, который был с ним, или у вас есть несколько версий двоичного файла на вашем компьютере и ссылаются на старую копию и т.д. Если это действительно проблема, это хорошая причина использовать ссылки на проекты, насколько это практически возможно.

+8
18 мар. '10 в 10:29
источник

Существует почти незаметная настройка, которая фиксировала эту проблему для меня. Если есть определенный исходный файл, в котором точка останова не попадает, он может быть указан в

  • Обозреватель решений
    • щелкните правой кнопкой мыши Solution
      • Свойства
        • Общие свойства
          • Исходные файлы отладки
            • "Не ищите эти исходные файлы".

По какой-то причине мне неизвестно, VS 2013 решил разместить там исходный файл, и впоследствии я больше не мог ударить точку останова в этом файле. Это может быть виновником "исходного кода отличается от исходной версии".

+7
03 апр. '15 в 13:08
источник

Для меня ни один из пунктов не решил проблему. Я просто добавил новую строку кода внутри этой функции, что-то вроде:

int a=0;

добавив, что, я думаю, я вызвал Visual Studio, чтобы добавить эту функцию в исходную версию

+6
06 дек. '17 в 0:02
источник

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

+4
06 мая '10 в 6:34
источник

Я тоже столкнулся с этим. Условия, которые вызвали мою проблему:

  • Я запускаю полный экземпляр IIS7 локально
  • Я запускаю свое программное обеспечение в отдельные проекты

Я вызвал это, открыв предыдущую версию (VS попросил спросить, хочу ли я указать на этот экземпляр в отладке IIS, я ответил "Да" ), затем открыв текущую версию (снова отвечая на запрос IIS "Да" ), затем попытка отладки в предыдущей версии.

Чтобы решить проблему, я просто закрыл и повторно открыл предыдущую и предполагаемую версию, еще раз подтвердив ее как источник отладки.

+4
09 апр. '13 в 17:28
источник

Вы можете получить это сообщение, когда используете активатор, а сборка, в которую вы установили точку останова, еще не загружена.

Точка останова будет устранена после того, как активатор загрузит сборку (при условии, что символы сборки и отладки обновлены). Хорошее место для просмотра - это окно модулей в меню отладки. Там вы должны искать сборку, к которой принадлежит ваш файл. Сначала проверьте, что сборка загружена. Затем, откуда он загружен? Затем загружается файл символов. Опять же, где загружен файл символов? Наконец, проверьте версии обоих.

+4
19 сент. '11 в 18:31
источник

Для меня решение было скрыто в Advanced Build Settings свойств проекта: введите описание изображения здесь

По неизвестной причине он был установлен в none: установка его на full заставила точки останова попасть.

Чтобы перейти в это диалоговое окно, откройте свойства проекта, затем перейдите к Build, затем нажмите кнопку Advanced... в нижней части страницы.

+3
26 окт. '17 в 16:37
источник

У меня была такая же проблема в нескольких проектах в проекте многоуровневой архитектуры, и проблема была в конфигурации, флажок сборки для выбранного проекта не был отмечен. поэтому проблема была решена для одного проекта.

Для одного другого слоя это создавало такую же проблему, даже если в настройках включена сборка. Я сделал все другие варианты, такие как возобновление очистки проекта, но ни один из них не помог. Наконец, я снял флажок сборки для этого конкретного проекта и очистил и пересобрать. Снова отметили флажок и сделали то же самое. тогда проблема была решена.

Надеюсь это поможет..

+3
05 апр. '18 в 10:09
источник

идти к:

Сервис> Параметры> Отладка> Общие> не отмечено "Требовать, чтобы исходные файлы точно соответствовали исходной версии"

+3
14 апр. '16 в 6:10
источник

Проблема заключается в том, что ваша информация об отладке не синхронизируется с вашей сборкой. Решение прост:

  • Перейдите в папку с папкой
  • Удалите файлы .pdb
  • Перестроить

Сделайте трюк!

(странно, перестройка, не отбрасывающая файлы .pdb, не всегда работает. Я вижу обновленную дату обновления, но все же где-то в цепочке (отладчик VS2013, IIS, кеш сборки) это изменение не обнаружено)

+3
21 мар. '15 в 20:45
источник

Если у вас есть несколько проектов в вашем решении, убедитесь, что правильный проект установлен как StartUp Project. Чтобы настроить конкретный проект как проект запуска вашего решения, щелкните правой кнопкой мыши проект, выберите Set As StartUp Project.

После того, как я правильно установил проект StartUp, желаемый момент прерывания был достигнут потоком.

+3
30 мар. '15 в 18:19
источник

Это происходит также при отладке проекта С++, который загружает модуль, который был реализован с помощью некоторого языка CRL (Managed С++, С# и т.д.). В этой ситуации сообщение об ошибке действительно вводит в заблуждение.

Решение состоит в том, чтобы включить свойство конфигурации среды выполнения Common CLR в проект запуска и перекомпилировать это.

+3
30 апр. '12 в 10:18
источник

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

+3
15 мая '13 в 18:55
источник

В моем случае я разрабатывал приложение Windows CE, которое протестировало против эмулятора. Проблема заключалась в том, что исполняемый файл не был размещен в эмуляторе, поэтому .pdb(в среде разработки) не синхронизировался с .exe(в эмуляторе), потому что новый .exe никогда не копировался в эмулятор. Я должен был удалить .exe в эмуляторе, чтобы принудительно установить новое развертывание. Тогда это сработало.

+2
21 нояб. '13 в 14:30
источник

Я испытал это в 32-битной версии на vs2017.

Точно, ни один из решений не работал у меня. Я перезапустил, я очистил файлы IDE, чистое построенное решение, вытащил из git repo и перестроил решение безрезультатно.

Я забирал 64-битную зависимость от nuget, и как только я использовал сборку, источники больше не встраивались в окончательный исполняемый файл, а вместо этого создавались источники кэширования IDE.

Я удалил конфигурацию nuget, удалил ссылочную сборку, загрузил исходный код, создал log4net вручную, подписал его, добавил в папку в моем проекте, добавил ссылку на него, и я смог снова отлаживать.

Это была боль, я надеюсь, что она встанет в списке ответов, чтобы все могли видеть.

Изменить: во время сборки не было ошибок, несмотря на то, что в настройках IDE включена опция "Приглашение на сборку ошибок".

+2
21 окт. '17 в 20:40
источник

В Windows 7, Visual Studio Express 2010, если вы активировали опцию Использовать режим совместимости для Windows XP SP3, эта ошибка может возникнуть.

Я снял флажок, и он снова работал отлично. Щелкните правой кнопкой мыши ярлык на VS или исполняемый файл, выберите свойства, а затем совместимость.

+2
18 мар. '14 в 14:18
источник

В моем случае я присоединился к запущенному процессу в VS 2012. При подключении вам предоставляется возможность отладки в различных режимах (native, script, silverlight, managed 2.0, managed 4.0 и т.д.). По умолчанию отладчик автоматически выбирает режим. Однако Automatic не всегда делает правильный выбор. Если ваш процесс содержит несколько типов кода, убедитесь, что отладчик использует правильный.

+2
19 авг. '13 в 14:50
источник

Сначала я попытался из командной строки;

удаление временных файлов из командной строки работало.

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Временные файлы ASP.NET > rd/s root

Когда я отключить параметр "Включить только мой код" в меню "Сервис" → "Параметры" → "Отладка" → "Общие"

Проблема решена для меня. Это приложение WCF, пыталось отладить страницу ashx. http://blogs.msdn.com/b/zainnab/archive/2010/10/25/understanding-just-my-code.aspx

+2
17 окт. '14 в 19:24
источник

Что сработало для меня, так это изменить платформу решений от x86 до Any CPU. После перехода на Any, я установил адрес остановки, запустил веб-сайт, открыл страницу, нажал кнопку и остановился. Я закрыл сайт, сменил его на x86 и успешно выполнил ту же последовательность.

+2
15 мая '12 в 21:11
источник

Если ваш отладочный процесс содержит несколько доменов приложений, и сборка загружается в оба, и одна из них загружает старую копию (обычно что-то динамически загруженную как плагин), точка останова может казаться сплошной, но поток, который должен попасть в точку останова находится в appdomain со старой сборкой и никогда не попадает. Вы можете увидеть, какие сборки загружены и их путь в окне модуля.

+1
16 сент. '14 в 23:29
источник

Может быть, DLL загружаются из GAC.

Вы можете удалить dll из gac, требуются права администратора.

gacutil -u YourDll

+1
17 дек. '17 в 9:59
источник
  • 1
  • 2

Посмотрите другие вопросы по меткам или Задайте вопрос