вихідний файл відрізняється від того, коли був побудований модуль


103

Це зводить мене з розуму.

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

Незважаючи на те, що нічого не було виділено, проект, здається, працює в моєму браузері. Тому я вирішив запустити налагоджувач, щоб побачити, чи справді все працює так, як має бути.

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

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

Я не можу перевірити жоден код, який я написав сьогодні через це.

  • Як джерело може бути іншим, ніж двійкове, коли я тільки його виконав?
  • Чи є якийсь спосіб вибити якийсь сенс у візуальній студії, чи я просто щось пропускаю?

Вибачте, якщо це було трохи. Коротка версія: я компілюю свою програму, потім намагаюся її налагодити, і візуальна студія повідомляє мені, що мій вихідний файл (який я щойно скомпілював) відрізняється від модуля, який я щойно створив. Я просто хочу знати, чому він вважає це
розчарованийкодер

Відповіді:


111

У мене виникла проблема запуску консольного додатка, де джерело, яке було іншим, було джерелом, що мав точку входу (статична недійсність Main). Видалення каталогів bin та obj та повна перебудова, здавалося, виправляють це, але щоразу, коли я вносив зміни коду, він буде знову застарілим.

Причиною цього я став:

  1. Я перевірив "Створювати лише запуску проектів та залежності від запуску" (Інструменти -> Параметри -> Проекти та рішення -> Створити та запустити)
  2. У Менеджері конфігурацій у моєму проекті запуску не було встановлено "Збірка"

(Для №2 -> доступний на панелі інструментів у спадному списку "Налагодження / випуск".)


7
+1 для підказки менеджера конфігурації. Я намагався розібратися в цьому протягом години, і це було все.
Нік Сарабін

У мене було кілька гілок розчину в TFS. Видалення каталогів bin та obj у всіх перевірених гілках, здається, очистить речі.
запчастини

в моєму випадку мене помилково змінили solution platformsз Any CPUна Mixed Platform!!! Я повертаю його назад, Any CPUі він працює знову.
vaheeds

Дякую, Рішення> Властивості> Властивості конфігурації> Конфігурація, мою консольну програму (яка виконує тести для веб-додатків у тому ж sln) не було знято.
emery.noel

23

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

Проблема тут полягає в тому, що ваші dll та / або ваші pdb файли не синхронізовані.


1
Ви не згадали прямо, але "розвантажити проект" (перезавантажити знову) працює для мене, дякую.
javaLover

це працювало для мене:> Ніщо з цього не працювало, і я нарешті намагався натиснути на проект правою реконструкцією кожного проекту окремо. Це оновило .dlls та .pdb файли, щоб я міг налагоджувати.
Хачатур

розвантажувати проект (знову перезавантажувати) та публікувати останні біти на веб-сервері (IIS) працює для мене.
Джейсон Тан

5

Виконайте ці кроки

  1. Просто видаліть каталог bin з проекту, де генерується DLL.
  2. Перебудуйте проект.
  3. Видаліть посилання з проекту, що посилаються на DLL.
  4. Знову включайте посилання.
  5. Насолоджуйтесь.

4

На додаток до цих відповідей у ​​мене було те саме питання під час заміни нових DLL-файлів старими через неправильний шлях. Якщо ви все ще отримуєте цю помилку, ви можете не вказати неправильний шлях для DLL. Перейдіть до менеджера IIS та натисніть веб-сайт, який використовує ваші DLL-файли. У правому вікні натисніть Розширені налаштування та перейдіть до шляху папки Фізичний шлях у Провіднику файлів та переконайтесь, що ви використовуєте цю папку для заміни DLL-файлів.


4

Деякі речі, які ви повинні перевірити:

Ви двічі перевіряли посилання на ваш проект?

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

alt текст
(джерело: msdn.com )

Клацніть правою кнопкою миші та закрийте / закрийте її. У вас може бути більше одного. Чи можете ви налагодити свої зміни зараз?

Ви використовуєте версію налагодження, але лише вбудовану версію (або навпаки)?

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


Компіляції досягають успіху. Я трохи ноб, коли йдеться про Visual Studio. Як перевірити, чи працює я налагоджувальну версію чи версію?
frustratedcoder

1
@frustrated - я просто намагався усунути очевидне. Щоб перевірити, випускаєте чи відладжуєте, перевірте спадне меню поруч із піктограмою "налагодження" на панелі інструментів. Це буде або "Налагодження", або "Випуск".
ChrisF

Дякую. Це говорить про налагодження. Це те, що має бути?
розчарованийкодер

@frustrated - Це гарний старт;). Ви можете "налагодити" код випуску, але він не такий корисний - але це не актуально тут. Це означає, що ви (або, принаймні, повинні бути) будуєте та запускаєте бінарні файли налагодження. Мені доведеться подумати ще трохи - навіть не бачачи проблеми, її важко діагностувати.
ChrisF

"не бачачи фактично проблеми, її важко діагностувати", я так і подумав. Я дуже ціную допомогу, хоча
розчарованийкодер

3

З веб-службами проблему можна викликати за допомогою команди Visual Studio "Перегляд у браузері". Це розміщує файли DLL та PDB служби в папках bin та obj. Заходячи у веб-сервіс від клієнта, Visual Studio якось використовує PDB у папці bin (або obj), але використовує DLL у папці збірки вихідних даних проекту. Є кілька способів вирішення:

  1. Спробуйте видалити файли DLL та PDB з файлів бін та obj веб-служби.
  2. Спробуйте натиснути «Переглянути в браузері» у Visual Studio.

Якщо раніше ви отримали помилку невідповідності вихідного файлу, Visual Studio, можливо, додав ім'я файлу до чорного списку. Перевірте властивості рішення. У лівій частині діалогового вікна виберіть "Загальні властивості -> Налагодження вихідних файлів". Якщо вихідні файли веб-служби з’являються в полі «Не шукайте ці вихідні файли», видаліть їх.


2

У мене просто було це питання.

Я спробував усе вищесказане, але тільки це спрацювало:

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

побудувати рішення.

Це вирішило проблему для всіх складених для мене конструкцій.


Я думаю, що тут важливо видалити .pdb файли. Це сталося зі мною, оскільки я скопіював застарілі .pdb файли з іншої гілки.
Данзоміда

1

Ось як я вирішив проблему в Visual Studio 2010:

1) Змініть параметр "Конфігурації рішень" з "Налагодження" на "Випуск"

2) Почніть налагодження

3) Зупиніть налагодження і перемкніть параметр "Конфігурації рішень" назад на "Налагодження"

Це працювало для мене. Крок 3 необов’язковий - він працював нормально, коли я змінив його на "Випуск", але хотів змінити його.


1

Моє рішення:

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

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

Переключення мого проекту на пошук у вихідному каталозі нового рішення вирішило для мене цю проблему.


1

У мене була ця проблема, і виявляється, я запустив консольну програму як програму Windows. Перемикання типу виводу назад на консоль вирішило проблему.


1

У мене була така ж проблема. Щоб виправити це, я застосував "Режим випуску" для налагодження у VS2013. Що мені достатньо, тому що я працюю у вузлі js \ c ++ аддон.


1

Вивантажте проект, у якому є файл, який викликає помилку.

Перезавантажте проект.

Виправлено



1

Моя проблема полягала в тому, що у мене було два проекти у своєму вирішенні. Другий - це тестовий проект, який використовується для виклику першого. Я вибрав шлях до посилань із папки звільнення папки.

Тому щоразу, коли я вносив зміни до коду першого проекту та перебудовував його, він оновлював би dlls у папці налагодження, але викликуючий проект вказував на папку випуску, даючи мені помилку, "вихідний файл відрізняється від модуля збудований."

Після того, як я видалив посилання на DLL основного проекту в папці випуску і встановив його на dll у папці налагодження, проблема відійшла.


0

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

вам потрібно перейти вручну і скопіювати DLL останнього проекту збірки у проект, на який посилаються


0

Я використовував Visual Studio 2013 і мав існуючий проект під контролем джерела.
Я завантажив нову копію з управління джерелом у новий каталог.
Після внесення змін у свіжу копію, під час створення я отримав питання про помилку.

Моє рішення:
1) Відкрити Documents\IISExpress\config\applicationhost.config
2) Оновити virtualDirectoryвузол із каталогом до свіжої копії та зберегти.


0

Моя проблема полягала в тому, що я мав веб-сервіс у проекті і змінив шлях збірки.

Відновлення шляху збірки за замовчуванням вирішило мою проблему.


0

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

Зрештою я відкрив IIS та переробив пул додатків для свого веб-додатка. У мене версія IIS 8.5.9600, я клацнув правою кнопкою миші веб-додаток, а потім: Розгортати> Переробляти> Переробляти пул додатків> ОК.

Схоже, це було виправлено, зараз точки прориву потрапляють, як очікувалося. Я думаю, що це зробити разом із видаленням папок bin та obj допомогло моїй ситуації.

Удачі!


0

Я знаю, що це старе питання, але у мене просто була та сама проблема, і я хотів опублікувати тут, якщо це допомагає комусь іншому. У мене з'явився новий комп'ютер, і відділ інформаційних технологій об'єднав мій старий комп'ютер з новим. Коли я налаштував TFS, я відобразив локальний шлях, відмінний від того, який я раніше використовував, на додатковий внутрішній привід. Старий шлях все ще існував з об'єднаних даних на моєму жорсткому диску, щоб я міг ще будувати та запускати. Мій шлях IIS також вказував на старий каталог. Після того як я оновив IIS до правильного шляху, мені вдалося налагодити налагодження. Я також видалив старий каталог для гарної міри.


0

Я також це пережив. Я просто відкриваю папку obj в проекті, а потім відкриваю папку налагодження, видаляю .pdb файл і все.


0

Ця помилка також трапляється, якщо ви спробуєте внести зміни у вихідний файл, який не є частиною проекту.

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



0

У Visual Studio 2015, використовуючи C ++, для мене виправлена the source file is different from when the module was builtпроблема

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

0

Налагодження-> почати без налагодження.

Цей варіант спрацював для мене. Сподіваюся, це допомагає!


0

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

Якщо це не так:

Переконайтеся, що ви збираєте Visual Studio у режимі, який зберігає .lib файли:

  1. властивості -> Налаштування властивостей -> Загальне -> Тип конфігурації -> статична бібліотека

  2. властивості -> Налаштувати властивості -> Загальне -> Розширення цілі = .lib (замість EXE)

Переконайтеся, що вихідні та проміжні каталоги відповідають каталогу Matlab в

  1. властивості -> Налаштувати властивості -> Загальне -> Каталог виводу
  2. властивості -> Налаштувати властивості -> Загальне -> Проміжний каталог

0

У моєму випадку відповідь @ Eliott не працює. Щоб вирішити цю проблему, мені довелося виключити / включити з Project мій дефіцитний файл, а також очистити та відновити рішення.

Після цих дій мій файл із моїми останніми модифікаціями та налагоджувачем відновлюються.

Я сподіваюся, що це допоможе.


0

Цю проблему я отримую при налагодженні інколи в Visual Studio, але коли додаток обслуговується IIS . (ми повинні розвиватися в цій формі з деяких складних причин, пов’язаних із тим, як оригінальний розробник налаштував цей проект.)

Коли я змінюю файл і відновлюю , це виправляє його багато часу. Я знаю, що це звучить нерозумно, але я просто намагався налагодити якийсь код, щоб зрозуміти, чому він робить щось дивне, коли я його не змінював за деякий час, і я спробував десяток речей з цієї сторінки, але це було виправлено лише зміною файл..

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.