Исходный файл отличается от того, когда был создан модуль

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

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

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

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

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

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

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

Ответ 1

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

Я нашел для этого следующее:

  • Я проверил "Только создавать проекты запуска и зависимости от Run" (Инструменты → Параметры → Проекты и решения → Сборка и запуск)
  • В Configuration Manager у моего проекта запуска не было отмечено "Build"

(для # 2 → доступно через панель инструментов в раскрывающемся списке "Отладка/выпуск".)

Ответ 2

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

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

Ответ 3

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

  • Просто удалите каталог bin из проекта, в котором создается DLL.
  • Восстановите проект.
  • Удалить ссылку из проекта, ссылающегося на DLL.
  • Включить снова ссылку.
  • Наслаждайтесь.

Ответ 4

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

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

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

alt text
(источник: msdn.com)

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

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

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

Ответ 5

В дополнение к этим ответам у меня возникла та же проблема при замене новых библиотек DLL на старые из-за неправильного пути. Если вы все еще получаете эту ошибку, вы можете не указывать неправильный путь для DLL. Перейдите в диспетчер IIS и щелкните веб-сайт, который использует ваши библиотеки DLL. В правом окне щелкните "Дополнительные параметры" и перейдите к пути к папке "Физический путь" в проводнике файлов и убедитесь, что вы используете эту папку для замены своих библиотек DLL.

Ответ 6

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

  • Попробуйте удалить файлы DLL и PDB в корзине веб-сервиса и файлах obj.
  • Попробуйте нажать "Просмотр в браузере" в Visual Studio.

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

Ответ 7

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

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

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

создайте решение.

Это фиксировало проблему для всех движений для меня.

Ответ 8

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

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

2) Начать отладку

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

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

Ответ 9

Мое решение:

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

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

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

Ответ 10

У меня была эта проблема, и оказалось, что я запускаю консольное приложение в качестве приложения Windows. Исправлена ​​проблема переключения типа вывода на консоль.

Ответ 11

У меня была та же проблема. Чтобы исправить это, я использовал "Режим выпуска" для отладки в VS2013. Этого достаточно для меня, потому что я работаю над аддоном node js\С++.

Ответ 12

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

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

Фиксированный

Ответ 13

В Visual Studio 2017 удаление скрытой папки .vs в разрешенной для меня проблеме.

Ответ 14

Моя проблема заключалась в том, что у меня было два проекта в моем решении. Второй был тестовый проект, используемый для вызова первого. Я выбрал путь к ссылкам из папки выпуска папки bin.

Поэтому всякий раз, когда я вносил изменения в первый код проекта и перестраивал его, он обновлял dll в папке отладки, но вызывающий проект указывал на папку релиза, сообщая мне об ошибке: "исходный файл отличается от того, когда модуль был построен."

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

Ответ 15

решение: -  проблема в:- если ваши некоторые проекты в решении, обратитесь к некоторым другим проектам, то иногда dll некоторых проектов, не будет обновляться автоматически, всякий раз, когда вы строите решение, некоторые проекты будут иметь предыдущие DLL сборки, а не последние dll

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

Ответ 16

Я использовал Visual Studio 2013, и у меня был существующий проект под контролем источника.
Я загрузил новую копию из исходного элемента управления в новый каталог.
После внесения изменений в новую копию, при создании я получил ошибку.

Мое решение:
1) Открыть Documents\IISExpress\config\applicationhost.config
2) Обновите virtualDirectory node с помощью каталога в новую копию и сохраните.

Ответ 17

Моя проблема заключалась в том, что у меня был веб-сервис в проекте, и я изменил путь сборки.

Восстановление пути сборки по умолчанию разрешило мою проблему.

Ответ 18

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

В итоге я открыл IIS и переработал пул приложений для своего веб-приложения. У меня есть версия IIS 8.5.9600, я щелкнул правой кнопкой мыши мое веб-приложение, а затем: Deploy > Recycle > Recycle pool pool > OK.

Кажется, что он исправил это, точки останова теперь попадают, как ожидалось. Я думаю, что делать это вместе с удалением папок bin и obj помогло мне в этом.

Удачи!

Ответ 19

Я знаю, что это старый вопрос, но у меня была такая же проблема, и я хотел опубликовать здесь, если это поможет кому-то другому. У меня появился новый компьютер, и ИТ-отдел объединил мой старый компьютер с новым. Когда я настраивал TFS, я сопоставил другой локальный путь, чем тот, который я использовал ранее, на дополнительный внутренний диск. Старый путь все еще существовал из объединенных данных на моем жестком диске, поэтому я все еще мог создавать и запускать. Мои пути IIS также указывали на старый каталог. Как только я обновил IIS до правильного пути, я смог отлаживать все отлично. Я также удалил старый каталог для хорошей меры.

Ответ 20

Я также испытал это. Я просто открываю папку obj в проекте, а затем открываю папку отладки, удаляю файл .pdb и все это.

Ответ 21

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

Я отлаживал метод из .dll другого одного из моих проектов, где Visual Studio довольно хорошо загрузил источник, потому что DLL был построен на той же машине, и он знал путь к источнику. Очевидно, что изменение такого файла ничего не сделает, если вы не восстановите ссылочный проект.

Ответ 22

  • Удалить все точки останова.
  • Перестроить.
  • Готово

Ответ 23

В Visual Studio 2015 с использованием С++ для меня проблема the source file is different from when the module was built заключалась в

  • перезапустить Visual Studio.

Ответ 24

Отладка- > запуск без отладки.

Этот вариант работал у меня. Надеюсь, это поможет!

Ответ 25

Проверьте правильность местоположения, на которое вы указали, используя mex() в Matlab (содержит файлы lib и obj, которые были изменены до последней даты, когда вы скомпилировали библиотеку в Visual studio).

Если это не так:

Убедитесь, что вы компилируете Visual studio в режиме, который сохраняет файлы .lib:

  1. свойства → свойства конфигурации → общие сведения → тип конфигурации → статическая библиотека

  2. Свойства → Свойства конфигурации → Общие → Целевое расширение =.lib (вместо exe)

Убедитесь, что выходные и промежуточные каталоги соответствуют каталогу Matlab в

  1. свойства → свойства конфигурации → общие → выходной каталог
  2. свойства → Свойства конфигурации → Общие → Промежуточный каталог

Ответ 26

В моем случае ответ @Eliott не работает. Для решения этой проблемы мне пришлось исключить/включить из проекта мой дефектный файл, а также очистить и перестроить решение.

После этих действий мой файл с моими последними изменениями и отладчиком восстанавливаются.

Я надеюсь, что это поможет.

Ответ 27

Я получаю эту проблему при отладке иногда с Visual Studio, но когда приложение обслуживается IIS. (Мы должны разрабатывать в этой форме по некоторым сложным причинам, связанным с тем, как первоначальный разработчик настроил этот проект.)

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

Ответ 28

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