«Точка розриву наразі не буде потраплена. Вихідний код відрізняється від оригінальної версії ». Що це означає?


513

Під час налагодження у Visual Studio іноді я додаю точку розриву, але вона порожня, і В.С. каже: "Точка зламу в даний момент не буде потрапляти. Вихідний код відрізняється від оригінальної версії". Очевидно, це заважає мені налагоджувати.

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


36
перекомпілюйте / складіть проект перед додаванням точки перерви
lexu

Ви відкриваєте проект, написаний в іншій версії візуальної студії?
Махеш Велага

2
Це веб-проект. Не повинно бути явно його будувати. Він повинен складатись із використання. Я підозрюю, що VS не може створити веб-сайт, але це мені не говорить! Махеш - ні, все та ж версія VS.
Девід

У моєму випадку .. У мене є різні випуски одного і того ж коду (наприклад, test.cs на Живій версії та версії devolopment .. Коли я відкрив версію devolopment і ставив точку розриву на test.cs видав таку ж помилку, але я зрозумів, що я ставлю тест на розрив .cs клас, який пов’язаний з живою версією sln не devolopment, тому перевірте, що CS вже
розроблено

5
Видалення каталогів bin та obj, ніж перебудова, працювало для мене.
Aycan Yaşıt

Відповіді:


277

Як мовиться, "вихідний код відрізняється від оригінальної версії".

Клацніть правою кнопкою миші на папці проекту у провіднику рішень та виберіть Clean. Побудуйте нову версію проекту, і точка розриву запрацює знову!


120
Використання чистого не завжди працює. Мені довелося вручну видалити все з моєї папки для сміття, щоб знову працювати.
Карра

3
У моїй папці бін помилково було посилання на DLL. Виправлений опорний шлях фіксований.
Бред Урані

39
Для мене навіть видалення папок bin та obj не спрацювало. Довелося також перезапустити Visual Studio.
d512

1
Витратили майже весь день, щоб знайти рішення. Дякуємо тоні за надання рішення.
Раць

8
Я закрив VS, видалив усі папки бін та obj, відновив усе, перевірив конфігурації збірки, збірка успішна. Без кісток. Прості речі не повинні бути такими складними. >: |
snarf

129

Якщо ви скасували проект DLL у конфігурації збірки налагодження , ваш новий код ніколи не буде побудований!

Перейдіть до Build --> Configuration Manager ...(у VS2010) і перевірте, чи проект з кодом, який ви намагаєтесь налагодити, перевіряється на поточну конфігурацію збірки.


Дякую за пропозицію Олівер. Це напевно тут не відбувається, я б помітив досить швидко, якби один із моїх проектів не будувався.
Девід

3
У мене було саме таке питання, тільки я нічого не перевірив. це було лише побудувати для x86 у цьому діалоговому вікні, тоді як моя локальна машина - x64! Тому я вибрав Any CPUваріант, і він працює знову.
JP Hellemons

3
Видалення проектів з конфігурації налагодження без поважної причини повинно бути кардинальним гріхом, оскільки ця конфігурація цілком може бути використана машиною збирання CI (я знаю, що вона є тут), так що в кінцевому підсумку це могло б перейти, коли вона повинна вийти з ладу. Я знаю, що це може бути один з багатьох етапів створення, але все ж ... @ Олівер, я сподіваюся, що член команди купив вам печиво! :)
Fetchez la vache

У мене була ця проблема, коли я перейшов на збірку для x86 замість AnyCPU. Він вилучив проекти з незрозумілих причин.
Адам Педлі

Проект перерахований для Build в Менеджері конфігурацій, тому це мені не допомогло. Боюся :(
Ortund

43

Для мене це було під час роботи над проектом WebSite. Після очищення цих папок temp я повернув належні помилки компілятора:

  • 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 використовував це одне, поки я редагував інший.


2
Вилучення тимчасових файлів у каталогу Windows працювало на мене, ура!
ChrisFletcher

7
Я просто хотів додати аналогічну відповідь - переконайтесь, що жодна стара копія DLL вашого проекту не лежить в жодній із тимчасових папок, які ASP.NET використовує, як-от C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Тимчасові файли ASP.NET - як згадувалося - але також і C: \ Windows \ Microsoft.NET \ Framework_64_ \ v4.0.30319 \ Тимчасові файли ASP.NET . Я використовую Все для швидкого пошуку цих копій .
Олівер

12
Лише швидкий натяк: введення %localappdata%в поле пошуку C:\Documents and Settings\%username%\AppData\Local
перенесе

1
Можу підтвердити, що це працювало для мене у Visual Studio 2013 над проектом веб-сервісу.
Moeri

Зробив усе це, але, здається, це не допомогло. Я теж був дуже схвильований, бачачи це.
Ортунд

40

Ви коли-небудь це робили?

Ви хочете продовжити та запустити останню вдалу збірку?

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

Спробуйте змінити це значення:

  • Інструменти
    • Параметри
      • Проекти та рішення
        • Побудувати та запустити
          • Під час запуску, коли виникають помилки побудови чи розгортання: Не запускати

Я не думаю, що я це зробив. Дякуємо за посилання. Це дало мені зрозуміти, що означає цей підказ!
Девід

11
Візуальна студія мала цю опцію десятиліттями (принаймні VS98 мала її). Я ніколи не розумів, чому хтось захоче запустити останню вдалу збірку. Зрештою, якби це було те, що я хотів, я б запустив це безпосередньо, оскільки я не міг налагоджувати. Не запуск був би більш розумним за замовчуванням.
OregonGhost

6
Я кілька разів використовував його для запуску проекту (з будь-якої причини, як просто для показу когось іншого), поки я все ще в середині написання коду, який не збирається. Іноді це зручно. Особисто я залишаю його інвалідом.
Codesleuth

3
Може, якби їм довелося показати свого начальника, коли він раптом зайшов. Вони можуть вдарити f5 і бути схожим на "бачите, це працює!"
Гігала

33

Йти до

  • Інструменти
    • Параметри
      • Налагодження
        • Загальні

Зніміть прапорець Потрібно, щоб вихідні файли точно відповідали оригінальній версії


17
@Rachmad Це рішення працює. Але це здається не повним рішенням, оскільки це означає, що наші вихідні файли не зовсім відповідають оригінальній версії
onmyway133

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

Навіть якщо це не встановлено, виконання не
досягає

12
Це НЕ вирішення цієї проблеми, а вирішення проблеми. Очевидно, я не хочу працювати з застарілими файлами в налагоджувачі.
Оби Ван

2
@ObiWan Не очевидно. Мені подобається вносити незначні зміни та продовжувати налагодження, навіть знаючи джерело та збірки різні.
Alan Baljeu

30

Виберіть « Налагодження» в « Конфігурації рішення» , а не « Випуск»

скріншот меню


1
Це було моє питання. Я склав в режимі налагодження, змінив код, а потім пізніше запустив його в режимі випуску. Недарма налагоджувач вважав код іншим - символи налагодження були різними. Коли я видалив папку бін, як запропонували інші, у мене з’явилася помилка "жодних символів для цього документа не завантажено". Лише тоді я здійснив зв’язок і пробрався до цієї відповіді. Для цього потрібно більше голосів!
indot_brad

Можливо, проект буде відключений для збірки навіть у конфігурації збірки налагодження. Необхідно вивчити конфігурацію збірки, перевертання між конфігурацією налагодження / випуску є безглуздим.
Асад Саедюддін

Це було і для мене. спробував очистити, відновити інші посилання на рішення безрезультатно. Не помітив, що рішення дивилося мені в обличчя
Адам Ей,

Це те, що сталося зі мною - я будував свій проект і замінював свої затримки знову і знову, але проблема просто не зникне. Я зрозумів, що код будується в режимі випуску під час заміни dlls з папки / bin / debug. Дурний мене.
displayName

Я хотів долучитися до процесу, який був побудований у режимі випуску. Перехід на налагодження вирішив мою проблему.
п'ять

27

Зверніть увагу на вікно "Вихід" у VS. Він підкаже, які збірки завантажуються і коли. Можливо, ви побачите, що десь у папці завантажується старіша версія вашої збірки.

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


1
Також варто пам’ятати, але я не думаю, що це проблема тут, оскільки я намагаюся проникнути в проект веб-сайту, а не в бібліотеку класів.
Девід

24

Закриття Visual Studio і повторне відкриття рішення можуть усунути проблему, тобто помилка в самому IDE (я запускаю VS2010).

Якщо у вас є кілька екземплярів запущеного Visual Studio, вам потрібно лише закрити екземпляр, що виконує вирішення проблеми.


4
Закриття Visual Studio теж працювало для мене. Також за допомогою дій «Очистити / відновити».
danielB


3
Фіксований вихід у VS 2017
Daniel Fisher lennybacon

Виправлена ​​проблема в VS 2012
seebiscuit

19

Новий спосіб вирішити цю проблему з'явився у Visual Studio 2017 15.3.1 до 15.3.5. Якщо ви використовуєте EditorConfig , цей charset=utf8параметр викликає ці симптоми. Команда VS відтворила це і каже, що над цим працюють .

Отже, одне виправлення - прокоментувати свій charset=utf8рядок у файлі .editorconfig.

Редагувати: це слід виправити станом на VS 15.5.


Зараз статус "Виправлено - очікує випуск" станом на два дні тому (9 жовтня 2017 року). Це хороша новина, оскільки UTF-8 - єдиний розумний стандарт для кодування тексту в наші дні. :-)
rmunn

Я також зауважую, що останньою причиною цього питання стала, очевидно, інша помилка , де charset=utf8її інтерпретували як "UTF-8 з BOM". Змінивши цю інтерпретацію на "без BOM", було порушено деякі файли UTF-8, у яких була BOM. Отже, якщо ви зіткнулися з цією проблемою, а виправлення Visual Studio ще не було випущено, спробуйте видалити BOM з початку ваших текстових файлів, і це може вирішити проблему. (Цей коментар благає посилання на Zero Wing ... :-))
rmunn

Це було і для мене проблемою. Наразі це не виправлено або принаймні випущено, або помилка була повторно введена (версія 15.4.2)
avidenic

12

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


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

Це поширена проблема, коли вибираєте застарілий код, який залишає мені дряпати голову, цікавлячись, який геній вирішив посилатись на dll від проекту в рішенні, яке коли-небудь використовується іншим проектом у рішенні. зітхання
Келл

10

Для мене жоден із пунктів не вирішив питання. Я щойно додав новий рядок коду всередині цієї функції:

int a=0;

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


7

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


Я не можу цього поставити +1 досить. Нещодавно я перевстановив Windows і не помітив, що моє системний годинник було вимкнено. Звичайно, ця зміна все накрутила, і відбудова всього рішення / проекту магічно виправила це.
Кайл Баран

7

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

  • Провідник рішень
    • клацніть правою кнопкою миші Рішення
      • Властивості
        • Загальні властивості
          • Налагодження вихідних файлів
            • Msgstr "Не шукайте ці вихідні файли".

Чомусь невідома мені причина, VS 2013 вирішив розмістити там вихідний файл, і згодом я більше не міг потрапити у цей файл. Це може бути винуватцем "вихідний код відрізняється від вихідної версії".


Я зіткнувся з точно такою ж проблемою. Ваша відповідь мені допомогла! Дякую! +1
jweyrich

5

Проблема полягає в тому, що інформація про налагодження не синхронізується з вашою збіркою. Рішення просте:

  1. Перейдіть до своєї папки
  2. Видаліть .pdb файли
  3. Перебудувати

Слід зробити трюк!

(дивна річ: відновлення без викидання .pdb файлів не завжди працює. Я бачу, що модифікована дата оновлюється, але все ще десь у ланцюзі (налагоджувач VS2013, IIS, кеш-збірка) ця зміна не виявлена )


Build-> Clean Solution також повинен видалити файли, які потрібно видалити.
Дейв

Після величезної втрати часу, втраченого через цю проблему, це рішення зробило трюк. Thx FrankyHollywood
AD

4

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

Точка розриву вирішиться, як тільки активатор завантажить збірку (якщо припустимо, що символи складання та налагодження оновлені). Хорошим місцем для перегляду є вікно модулів у меню налагодження. Там ви повинні шукати збірку, до якої також належить ваш файл. Спочатку перевірте, що збірка завантажена. Тоді звідки він завантажений? Потім завантажується файл символів. Знову ж, звідки завантажений файл символів? Нарешті перевірте версії обох.


4

Я також стикався з цим. Умови, які спричинили мою проблему:

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

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

Щоб вирішити, я просто закрив і повторно відкрив попередню і передбачувану версію, вкотре затвердивши її як джерело налагодження.


3

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


3

Це трапляється також при налагодженні проекту C ++, який завантажує модуль, реалізований з якоюсь мовою CRL (керований C ++, C # тощо). У цій ситуації повідомлення про помилку дійсно вводить в оману.

Рішення полягає в тому, щоб застосувати властивість конфігурації підтримки загальної мови (CLR) до проекту запуску і перекомпілювати це.


3

Якщо у вашому рішенні є кілька проектів , переконайтеся, що правильний проект встановлений як StartUp Project. Щоб встановити конкретний проект як проект запуску вашого рішення, клацніть правою кнопкою миші проект, виберітьSet As StartUp Project .

Після того, як я правильно встановив проект StartUp Project, потрібна точка розриву була досягнута потоком.


Варто також зауважити, що якщо ваша точка розриву знаходиться в проекті, який НЕ є вашим запуском проекту, і це НЕ МОЖЕ бути зроблено вашим проектом запуску (тому що, наприклад, вам потрібно, щоб інший проект був запуском), ви можете (після запуску основного) клацніть правою кнопкою миші та оберіть налагодження >> Почніть новий екземпляр проекту, який має точку
Caius Jard

3

Я пережив це в 32-бітній версії vs2017.

Точно жодне з рішень не працювало для мене. Я перезапустив, я очистив файли IDE, очистив вбудований розчин, витягнув з git repo і відновив рішення безрезультатно.

Я витягував 64-бітову залежність від nuget, і як тільки я використовував збірку, джерела вже не вбудовувались у остаточний виконуваний файл, а замість цього створювались кешовані джерела IDE.

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

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

Редагувати: Під час збирання не було помилок, незважаючи на те, що в налаштуваннях IDE було включено опцію "підказка про помилку збірки".


3

Для мене рішення було приховано у Advanced Build Settingsвластивостях проекту: введіть тут опис зображення

З невідомої причини було встановлено наступне none: встановлення його для fullспричинення потрапляння точок прориву.

Щоб перейти до цього діалогового вікна, відкрийте властивості проекту, потім перейдіть до Build, а потім виберіть Advanced...кнопку внизу сторінки.


3

У мене був той самий випуск у кількох проектах у проекті багатошарової архітектури, і проблема полягала в конфігураціях, прапорець збірки для вибраного проекту не встановлено. тому питання було вирішено для одного проекту.

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

Сподіваюся, це допомагає ..


2

У моєму випадку я приєднувався до запущеного процесу в VS 2012. Під час приєднання вам надається можливість налагодження в різних режимах (рідний, скрипт, сріблястий, керований 2.0, керований 4.0 тощо). За замовчуванням відладчик автоматично вибирає режим. Однак автоматичний не завжди робить правильний вибір. Якщо ваш процес містить кілька типів коду, переконайтеся, що налагоджувач використовує правильний.


У моєму випадку я приєднувався до w3wp.exe для налагодження коду .NET, але чомусь він додавав налагоджувач Script, який не зміг побачити мої точки прориву на C #. Змінивши його на відладчику .NET, дозволив моїм точкам перериву C # працювати.
Оран Деннісон

2

У моєму випадку я розробляв додаток Windows CE, який перевірявся на емуляторі. Проблема полягала в тому, що виконуваний файл не було розгорнуто до емулятора, тому .pdb (у середовищі розробки) не синхронізувався з .exe (в емуляторі), оскільки новий .exe ніколи не копіювався в емулятор. Мені довелося видалити .exe в емуляторі, щоб примусити нове розгортання. Тоді це спрацювало.


2

Що для мене працювало - змінити платформу рішення з x86 на будь-який процесор. Після зміни на «Будь-який» я встановив адресу зупинки, запустив веб-сайт, відкрив сторінку, натиснув кнопку і вона зупинилася. Я закрив сайт, змінив назад на x86 і виконав ту саму послідовність успішно.


2
Можливо, вибір процесора взагалі не впливає на проблему, і це лише той факт, що він змушує відбудовуватися?
jwg

Він використовуватиме іншу папку бін, напевно, у вашій будь-якій карті процесора був старий dll.
Карра

У мене була ця проблема, коли активна платформа x86 (яку я ніколи не використовувала), перемикання назад на Win32 вирішило проблему. ПК є спільним, тому хтось інший встановив цю платформу з будь-якої причини.
Зак

2

У Windows 7, Visual Studio Express 2010, якщо ви активували опцію Використовувати режим сумісності для Windows XP SP3 , ця помилка може статися.

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


1
Тут може статися те, що ваша конфігурація випуску змінюється з x32 на x64, коли ви вимикаєте режим сумісності, і у вас можуть бути не всі проекти, вибрані для складання в x32. Чому певні проекти вимкнено для створення в x32 - це те, про що вам доведеться поговорити з членами вашої команди.
Асад Саєдюддін

Це була саме моя проблема. Дякую!
Йохан Холтбі

2

Спочатку я спробував з командного рядка;

видалення тимчасових файлів із командного рядка спрацювало.

C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Тимчасові файли ASP.NET> root rd / s

Коли я відключаю опцію "Увімкнути лише мій код" в меню Інструменти -> Параметри -> Налагодження -> Загальне

Проблема вирішена для мене. Це програма WCF, намагалася налагодити сторінку ashx. http://blogs.msdn.com/b/zainnab/archive/2010/10/25/understanding-just-my-code.aspx


2

Це сталося зі мною, бо у мене були інші проекти, які не будували. Після того, як я вивантажив ці проблемні проекти (клацніть правою кнопкою миші на проект в Explorer Explorer -> Unload Project), відновив рішення і запустив знову - точка зламу потрапила!


2

Це трапилось у Visual Studio 2017 після того, як я додав існуючі файли до проекту. Це працювало для мене:

  1. закрити рішення,
  2. перейти до SolutionFolder\.vs\SolutionName\v15\sqlite3та видалитиstorage.ide
  3. відкрити рішення знову

Дякую за таке рішення! Ніхто раніше не працював, і це врятувало мені день :)
StefanaB

2

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

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