исходный файл отличается от того, когда модуль был построен - PullRequest
98 голосов
/ 21 июня 2010

Это сводит меня с ума.

У меня довольно большой проект, который я пытаюсь изменить. Ранее я заметил, что когда я набрал DbCommand, Visual Studio не делала подсветку синтаксиса, и я использую System.Data.Common.

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

Каждый раз, когда вызывается класс, который не выделил, я получаю сообщение "the source file is different from when the module was built".

Я очистил решение и перестроил его несколько раз, удалил файлы tmp, следуя всем указаниям здесь Получение «Исходный файл отличается от того, когда был построен модуль». , перезапустил веб-сервер и все еще он говорит мне, что исходные файлы отличаются, когда они явно не.

Из-за этого я не могу протестировать код, написанный сегодня.

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

Ответы [ 26 ]

107 голосов
/ 18 ноября 2011

У меня возникла эта проблема при запуске консольного приложения, в котором источником, который отличался, был источник с точкой входа (static void Main). Удаление каталогов bin и obj и полная перестройка, казалось, исправили это, но каждый раз, когда я вносил изменения в код, он снова становился устаревшим.

Причина, по которой я нашел это, была:

  1. Я установил флажок «Создавать только запускаемые проекты и зависимости при запуске» (Инструменты -> Параметры -> Проекты и решения -> Сборка и запуск)
  2. В Configuration Manager мой стартовый проект не проверял «Сборка»

(Для # 2 -> доступно через панель инструментов в раскрывающемся списке «Отладка / Выпуск».)

23 голосов
/ 30 сентября 2011

У меня просто была такая же проблема, все мои проекты находились в одном решении, поэтому они использовали ссылки «Проект на проект», поэтому, если один изменился, другие должны были быть обновлены.Однако это был не тот случай, я пытался собрать, перестроить, закрыть VS2010, вытащил новую копию из нашего контроля версий.Ничего из этого не сработало, и в итоге я попытался щелкнуть правой кнопкой мыши по проекту и перестроить каждый проект в отдельности.Это обновило файлы .dlls и .pdb, чтобы я мог их отладить.

Проблема здесь в том, что ваши dll и / или ваши файлы pdb не синхронизированы.

5 голосов
/ 16 сентября 2013

Выполните следующие действия

  1. Просто удалите каталог bin из проекта, где генерируется DLL.
  2. Перестройте проект.
  3. Удалить ссылку из проекта, которая ссылается на DLL.
  4. Включите снова ссылку.
  5. Наслаждайтесь.
4 голосов
/ 21 июня 2010

Некоторые вещи для вас, чтобы проверить:

Вы дважды проверили ссылки на проекты?

Есть ли запущенный веб-сервер Visual Studio, который все еще работает? Проверьте системный трей и найдите страницу со значком шестеренки (у вас может быть несколько):

альтернативный текст http://blogs.msdn.com/blogfiles/webdevtools/WindowsLiveWriter/Tip.NetDevelopmentServerinaMultiprojectS_104C2/image_2.png

Щелкните правой кнопкой мыши и закройте / выйдите из него. Вы можете иметь более одного. Можете ли вы отладить свои изменения сейчас?

Вы используете отладочную версию, но создали только версию выпуска (или наоборот)?

Компиляция действительно удалась? Я знаю, что нажал на "были ошибки, вы все равно хотите продолжить?" сообщение пару раз, не осознавая.

3 голосов
/ 25 января 2014

С веб-службами проблема может быть вызвана с помощью команды Visual Studio «Просмотр в браузере».Это помещает файлы DLL и PDB службы в папки bin и obj.При входе в веб-службу с клиента каким-то образом Visual Studio использует PDB в папке bin (или obj), но использует DLL в папке выходной сборки проекта.Есть несколько обходных путей:

  1. Попробуйте удалить файлы DLL и PDB из bin и obj файлов веб-службы.
  2. Попробуйте нажать «Просмотр в браузере» в Visual Studio.

Если вы ранее получили ошибку несоответствия исходного файла, Visual Studio мог бы добавить имя файла в черный список.Проверьте свойства вашего решения.Выберите «Общие свойства -> Отладка исходных файлов» в левой части диалогового окна.Если исходные файлы веб-службы отображаются в поле «Не искать эти исходные файлы», удалите их.

2 голосов
/ 26 июня 2014

У меня только что была эта проблема.

Я пробовал все вышеперечисленное, но только это сработало:

  • удалить файл .pdb для решения.
  • удалить поврежденные файлы .obj (для файла, о котором сообщается несинхронно)

построить решение.

Исправлена ​​ошибка, из-за которой все билды двигались вперед.

1 голос
/ 11 июня 2014

Вот как я исправил проблему в Visual Studio 2010:

1) Измените параметр «Конфигурации решений» с «Отладка» на «Выпуск»

2) Начните отладку

3) Остановите отладку и переключите параметр «Конфигурации решений» обратно на «Отладка»

Это сработало для меня.Шаг 3 является необязательным - он работал нормально, когда я изменил его на «Release», но я хотел изменить его обратно.

1 голос
/ 19 июня 2014

Мое решение:

Я включил существующий проект из другого решения в новый файл решения.

Я не заметил, что когда существующий проект перестраивался, он помещал окончательный результат в выходной каталог НОВОГО решения. У меня был определен путь компоновщика для просмотра выходного каталога решения OLD.

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

1 голос
/ 22 сентября 2015

У меня была такая же проблема. Чтобы исправить это, я использовал «Release Mode» для отладки в VS2013. Для меня этого достаточно, потому что я работаю в узле js \ c ++ addon.

1 голос
/ 07 сентября 2016

Выгрузите проект с файлом, который вызывает ошибку.

Перезагрузите проект.

Fixed

...