При отладке в Visual Studio иногда я добавляю точку останова, но она пустая, и VS говорит: «В данный момент точка останова не будет достигнута. Исходный код отличается от исходной версии». Очевидно, это мешает мне отладить.
Что на земле означает сообщение? Какая оригинальная версия? Если я только что открыл решение и не внес никаких изменений в код, как может существовать «оригинальная версия»?
.net
visual-studio
debugging
David
источник
источник
Ответы:
Как говорится, «исходный код отличается от оригинальной версии».
Щелкните правой кнопкой мыши папку проекта в обозревателе решений и выберите
Clean
. Создайте новую версию проекта, и точка останова снова заработает!источник
Если вы не отметили проект DLL в конфигурации сборки Debug , ваш новый код никогда не будет собран!
Перейдите к
Build --> Configuration Manager ...
(в VS2010) и проверьте, проверен ли проект с кодом, который вы пытаетесь отлаживать, на текущую конфигурацию сборки.источник
Any CPU
опцию, и она снова работает.Для меня это было во время работы над проектом 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 использовал это, пока я редактировал другое.
источник
%localappdata%
в поле поиска приведет вас прямо кC:\Documents and Settings\%username%\AppData\Local
Ты когда-нибудь делал это?
Хотите продолжить и запустить последнюю успешную сборку?
Если вы отметили флажок и нажали «Да», вы запустите последнюю успешную сборку, даже если ваш проект не компилируется. Это означает, что всякий раз, когда вы устанавливаете точку останова, вы получите эту ошибку.
Попробуйте изменить это значение:
источник
Перейти к
Снимите флажок Требовать исходные файлы, чтобы точно соответствовать оригинальной версии
источник
Выберите « Отладка» в конфигурациях решения вместо выпуска
источник
Обратите внимание на окно «Вывод» в VS. Он скажет вам, какие сборки загружены и когда. Вы можете видеть, что загружается более старая версия вашей сборки где-то в папке.
Например, если у вас есть несколько сборок, и вы в настоящее время пытаетесь разбить одну из вспомогательных сборок, CLR будет обрабатывать разрешение сборки, которое может загрузить другой файл сборки, чем тот, на который вы ссылались в проекте.
источник
Закрытие Visual Studio и повторное открытие решения может решить проблему, то есть это ошибка в самой IDE (я использую VS2010).
Если у вас запущено более одного экземпляра Visual Studio, вам нужно только закрыть экземпляр, на котором запущено решение с проблемой.
источник
Новый способ решения этой проблемы появился в Visual Studio 2017 с 15.3.1 по 15.3.5. Если вы используете EditorConfig ,
charset=utf8
опция вызывает эти симптомы. Команда VS воспроизвела это и говорит, что работает над этим .Поэтому одно из исправлений - закомментировать вашу
charset=utf8
строку в файле .editorconfig.Изменить: это должно быть исправлено с VS 15.5.
источник
charset=utf8
которое интерпретировалось как «UTF-8 с BOM». Изменение этой интерпретации на «без спецификации» привело к повреждению некоторых файлов UTF-8, в которых была спецификация. Поэтому, если вы столкнулись с этой проблемой, и исправление Visual Studio еще не выпущено, попробуйте удалить спецификацию из начала текстовых файлов, и это может решить проблему. (Этот комментарий просит ссылки на Zero Wing ... :-))Это часто случается также в том случае, если вы используете в файле ссылки на двоичные файлы (вместо ссылок проекта на код в вашем проекте), а скомпилированный двоичный файл, на который вы ссылаетесь, не синхронизируется с соответствующим исходным кодом на вашем компьютере. Это может произойти из-за того, что вы загрузили новую версию бинарного кода из системы управления исходным кодом без нового исходного кода, который шел с ним, или у вас есть несколько версий бинарного файла на вашей машине, и вы ссылаетесь на старую копию и т. Д. Если это действительно так проблема, это хорошая причина, чтобы использовать ссылки на проекты настолько, насколько это практически возможно.
источник
Для меня ни один из пунктов не решил проблему. Я просто добавил новую строку кода внутри этой функции, что-то вроде:
добавив, что, я думаю, я вызвал Visual Studio, чтобы добавить эту функцию в исходную версию
источник
Это может произойти, когда системное время изменяется во время отладки или между сеансами отладки, будь то программно, вручную или с помощью внешней программы.
источник
Существует почти незаметная настройка, которая исправила эту проблему для меня. Если есть конкретный исходный файл, в который не попадает точка останова, он может быть указан в
По какой-то неизвестной мне причине VS 2013 решил разместить там исходный файл, и впоследствии я больше не мог достичь точки останова в этом файле. Это может быть причиной "исходный код отличается от оригинальной версии".
источник
Проблема в том, что ваша информация отладки не синхронизирована с вашей сборкой. Решение простое:
Должен сделать свое дело!
(Странно то, что перестройка без выбрасывания файлов .pdb не всегда работает. Я вижу, как обновляется дата изменения, но все еще где-то в цепочке (отладчик VS2013, IIS, кэш сборок) это изменение не обнаружено )
источник
Вы можете получить это сообщение, когда используете активатор и сборка, в которую вы устанавливаете точку останова, еще не загружена.
Точка останова будет устранена, как только активатор загрузит сборку (при условии, что символы сборки и отладки обновлены). Хорошее место для просмотра - окно модулей в меню отладки. Там вы должны искать сборку, к которой принадлежит и ваш файл. Сначала убедитесь, что сборка загружена. Тогда откуда он загружается? Затем загружается файл символов. Опять же, откуда загружается файл символов? Наконец, проверьте версии обоих.
источник
Я тоже с этим столкнулся. Условия, которые вызвали мою проблему:
Я вызвал это, открыв предыдущую версию (VS попросил спросить, хочу ли я указать на этот экземпляр в отладке IIS, я ответил «Да»), а затем открыл текущую версию (снова отвечая на приглашение IIS «Да»). ), затем пытается выполнить отладку в предыдущей версии.
Чтобы решить эту проблему, я просто закрыл и заново открыл предыдущую и предполагаемую версию, снова заявив, что это источник отладки.
источник
Попробуйте отключить и заново установить точку останова во время работы в режиме отладки вместо того, чтобы делать это перед запуском режима отладки.
источник
Это также происходит при отладке проекта C ++, который загружает модуль, который был реализован с использованием некоторого языка CRL (Managed C ++, C # и т. Д.). В этой ситуации сообщение об ошибке действительно вводит в заблуждение.
Решение состоит в том, чтобы добавить свойство конфигурации поддержки CLR в запускаемый проект и перекомпилировать его.
источник
Если в вашем решении более одного проекта , убедитесь, что в качестве правильного проекта выбран
StartUp Project
. Чтобы установить конкретный проект в качестве проекта запуска вашего решения, щелкните проект правой кнопкой мыши и выберитеSet As StartUp Project
.После того, как я правильно установил мой StartUp Project, поток достиг желаемой точки останова.
источник
Я испытал это в 32-битной сборке на vs2017.
Точно ни одно из решений не сработало для меня. Я перезапустил, я очистил файлы IDE, очистил построенное решение, вытащил из git repo и перестроил решение безрезультатно.
Я вытягивал 64-битную зависимость из nuget, и как только я использовал сборку, исходные коды больше не встраивались в конечный исполняемый файл, а вместо этого создавались кэшированные источники IDE.
Я удалил конфигурацию nuget, удалил указанную сборку, загрузил исходный код, собрал log4net вручную, подписал его, добавил его в папку в моем проекте, добавил ссылку на него, и я смог снова выполнить отладку.
Это была боль, я надеюсь, что она появится в списке ответов для всеобщего обозрения.
Редактировать: во время сборки не было ошибок, несмотря на то, что в настройках IDE была включена опция «запросить ошибку при сборке».
источник
Для меня решение было скрыто в
Advanced Build Settings
свойствах проекта:По неизвестной причине он был установлен на
none
: установив его, чтобыfull
вызвать точки останова для удара.Чтобы попасть в это диалоговое окно, откройте свойства проекта, затем перейдите
Build
, затем нажмитеAdvanced...
кнопку внизу страницы.источник
У меня была такая же проблема в нескольких проектах в проекте многоуровневой архитектуры, и проблема была в конфигурации, флажок сборки для выбранного проекта не был отмечен. поэтому проблема была решена для одного проекта.
Для одного другого слоя это создавало такую же проблему, даже если в настройках включена сборка. Я сделал все другие варианты, такие как возобновление очистки проекта, но ни один из них не помог. Наконец, я снял флажок сборки для этого конкретного проекта и очистил и пересобрать. Снова отметили флажок и сделали то же самое. тогда проблема была решена.
Надеюсь это поможет..
источник
В моем случае я подключался к работающему процессу в VS 2012. При подключении вам предоставляется возможность отладки в различных режимах (нативный, скрипт, silverlight, управляемый 2.0, управляемый 4.0 и т. Д.). По умолчанию отладчик выбирает режим автоматически. Однако Автомат не всегда делает правильный выбор. Если ваш процесс содержит несколько типов кода, убедитесь, что отладчик использует правильный.
источник
В моем случае я разрабатывал приложение для Windows CE, которое тестировалось на эмуляторе. Проблема заключалась в том, что исполняемый файл не был развернут в эмуляторе, поэтому .pdb (в среде разработки) был не синхронизирован с .exe (в эмуляторе), поскольку новый .exe никогда не копировался в эмулятор. Мне пришлось удалить .exe в эмуляторе, чтобы вызвать новое развертывание. Тогда это сработало.
источник
Для меня сработало изменение платформы решения с x86 на любой процессор. Изменив значение Any, я установил конечный адрес, запустил веб-сайт, открыл страницу, нажал кнопку, и он остановился. Я закрыл сайт, перешел обратно на x86 и успешно выполнил ту же последовательность действий.
источник
В Windows 7, Visual Studio Express 2010, если вы активировали опцию Использовать режим совместимости для Windows XP SP3 , эта ошибка может возникнуть.
Я снял галочку с опции и она снова отлично заработала. Щелкните правой кнопкой мыши на ярлыке VS или исполняемый файл, выберите свойства, а затем совместимость .
источник
Сначала я попробовал из командной строки;
удаление временных файлов из командной строки сработало.
C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Временные файлы ASP.NET> корень rd / s
Когда я отключаю опцию «Включить только мой код» в Сервис -> Параметры -> Отладка -> Общие
Проблема решена для меня. Это приложение WCF, пыталось отладить страницу Ashx. http://blogs.msdn.com/b/zainnab/archive/2010/10/25/understanding-just-my-code.aspx
источник
Это случилось со мной, потому что у меня были другие проекты в решении, которое не строилось. После того как я выгрузил эти проблемные проекты (щелкнув правой кнопкой мыши по проекту в обозревателе решений -> Разгрузить проект), перестроил решение и снова запустил - точка останова была достигнута!
источник
Это случилось в Visual Studio 2017 после того, как я добавил существующие файлы в проект. Это сработало для меня:
SolutionFolder\.vs\SolutionName\v15\sqlite3
и удалитьstorage.ide
источник
Убедитесь, что вы не находитесь в режиме выпуска, когда вы пытаетесь отладить.
источник