Предупреждение при отладке исходного кода в Visual Studio 2010 - PullRequest
4 голосов
/ 19 января 2012

Я установил точку останова в исходном коде, но я получу предупреждение, что исходный код отличается от исходного.Это не будет достигать точки останова. Ударьте местоположение, чтобы позволить изменение в исходном коде.Кто-нибудь может объяснить мне, что это за проблема?

Ответы [ 6 ]

4 голосов
/ 19 января 2012

Контрольная сумма файла исходного кода не совпадает с контрольной суммой в файле PDB.

Чтобы решить эту проблему, перестройте решение.

Обходной путь: В свойстве Location проверки точки останова Allow source code to be different

3 голосов
/ 19 января 2012

Это может произойти, когда вы компилируете и запускаете сборку релиза. В сборках Release компилятор выполняет оптимизацию, которая может изменять или удалять части кода, например:

static void Main()
{
    int x = 10 + 5;   // <---- BREAKPOINT HERE

    Console.WriteLine("Foo");
}

Если вы откомпилируете и запустите этот код в отладочной сборке, точка останова будет работать как обычно. В сборке релиза компилятор увидит, что «x» никогда не используется, и «оптимизирует» всю строку, что означает, что точка останова никогда не будет достигнута!

2 голосов
/ 19 января 2012

Ваш исходный код отличается от времени компиляции. Вы можете остановить, очистить и восстановить свой проект.

2 голосов
/ 19 января 2012

Сделайте Build -> Clean Solution, затем Build -> Build Solution.Затем попробуйте снова выполнить отладку, убедившись, что активная конфигурация отлажена.

1 голос
/ 18 июня 2013

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

Моя проблема возникла, когда я изменил некоторый код в своей библиотеке классов.Как обычно, я сделал сборку обоих проектов в правильном порядке.Тем не менее, я бы получил сообщение о том, что исходный код был другим.Это произошло из-за того, что в моем веб-решении все еще открывалось старое «представление» файлов классов , вызванное отключением следующей опции .

Параметры> Среда> Определитькогда файл изменяется вне среды

Закрытие файлов классов в моем веб-проекте решило мою проблему.Сейчас я меняю эту опцию.

Надеюсь, это кому-нибудь поможет.

0 голосов
/ 26 сентября 2014

Приведенные выше предложения не сработали для меня при запуске модульных тестов - я выполнял чистку и перестройку для всего решения, но файлы DLL и PDB не удалялись в каталоге ~ \ UnitTests \ bin \ Debug,поэтому мне пришлось вручную удалить эти файлы, затем щелкнуть правой кнопкой мыши каталог UnitTests и выбрать «Build».

Обратите внимание, что в моем случае я использую Visual Studio 2013 с обновлением 3.

ОБНОВЛЕНИЕ:

Закончилось создание командного файла для очистки и построения моего решения, поэтомучто Visual Studio некорректно не покидает определенный проект, не перестраивая его:

msbuild.exe "MyClassLibrary\MyClassLibrary.csproj" /t:Rebuild /p:Configuration=Debug
msbuild.exe "UnitTests\UnitTests.csproj" /t:Rebuild /p:Configuration=Debug
...