.net - source - visual studio run in debug mode




«В настоящий момент точка останова не будет удалена. Исходный код отличается от исходного. «Что это значит? (20)

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

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


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

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


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


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

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

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

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

  • инструменты
    • Опции
      • Проекты и решения
        • Построить и запустить
          • При запуске при возникновении ошибок сборки или развертывания: Не запускать

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

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


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

int a=0;

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


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

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

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


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

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


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


Идти к

  • инструменты
    • Опции
      • отладка
        • генеральный

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


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

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


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

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


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


Проверьте, есть ли у вас несколько файлов с таким именем в решении.

У меня было это по проекту, который я взял с кем-то другим. Список точек останова был заполнен номерами строк в Controller.cs, некоторые из них активны, а некоторые нет. Я нашел этот вопрос и попробовал несколько вариантов, но когда я дважды щелкнул точки останова, они взяли меня в разные проекты в рамках решения. Поскольку файлы назывались одинаковыми, они кажутся одинаковыми, но это не так. Ответ, конечно же, должен игнорировать предупреждение, так как они станут активными, если вы загрузите этот другой файл.


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

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

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


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

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

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


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


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

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


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


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

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

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

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


идти к:

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





debugging