Редагувати та продовжувати: "Зміни заборонено, коли ..."


108

Навіть якщо я створюю чистий проект WinForms, "Правка та продовження" не працює, і видає мені помилку:

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

  1. Параметр "Редагувати та продовжувати" встановлено в Інструменти → Опції → Налагодження.
  2. Оптимізація не ввімкнена.
  3. Схоже, немає жодного керованого профілера.
  4. Я працюю в режимі налагодження
  5. Я працюю на x64 процесорі та Windows XP 32-розрядному, але встановлення цілі платформи на x86, а не AnyCpu не допомагає.
  6. Ремонт установки Visual Studio не допомагає.

Я також знайшов цю статтю на веб-сайті MSDN:

Непідтримувані сценарії

Редагування та продовження не доступні в наступних сценаріях налагодження:

  • Налагодження в Windows 98.

  • Налагодження в змішаному режимі (рідний / керований)

  • Налагодження SQL

  • Налагодження звалища доктора Ватсона.

  • Редагування коду після необробленого винятку, коли опція "Розмотувати стек виклику за не обробленими винятками" не обрана.

  • Налагодження вбудованої програми виконання.

  • Налагодження програми за допомогою Attach замість запуску програми за допомогою пункту «Пуск» у меню «Налагодження».

  • Налагодження оптимізованого коду.

  • Налагодження керованого коду, коли ціль - це 64-розрядний додаток. Якщо ви хочете скористатися Редагувати та продовжити, ви повинні встановити ціль на x86. (Властивості проекту, вкладка "Компілювати", налаштування "Розширений компілятор".)

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

Але я можу відповісти "Ні" на кожен пункт цього списку.

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


2
Ви працюєте в режимі випуску? Ти працюєш на X64?
Сем Шафран

Невже метод, який ви намагаєтесь виконати з дослідженнями, не дуже короткий? можливо, він накреслився (хоча я думаю, що налагодження не відбувається на налагодженні)
Сем Сафрон

Він не працює жодними методами, дуже короткими або дуже довгими.
нічний кодер

Ви ще спробували встановити ремонт?
Річард Ентоні Хайн

3
Я думаю, я повинен додати, що E&C - досить складна функція. Тестова матриця налагоджувача величезна, і змусити E&C працювати в будь-якій комбінації було б дуже важко. Але це теж дійсно важлива особливість, тому ми взяли на себе багато обмежень, щоб переконатися, що він буде доставлений. В межах навмисних обмежень, які ми покладаємо на нього, це одна з найвищої якості, яку ми поставляємо.
Джей Базузі

Відповіді:


21

Нарешті я вирішив проблему: UNINSTALL Gallio

У Gallio, здається, є досить багато шорстких країв, і краще не використовувати MbUnit 3.0, а використовувати рамку MbUnit 2.0, але використовувати бігун gallio, який ви запускаєте, не встановлюючи програму встановлення (який також встановив плагін візуальної студії).

Між іншим, у мене виникла проблема навіть після "відключення" плагіна Gallio. Тільки видалення вирішило проблему.

PS. Під редакцією nightcoder:
У моєму випадку відключення TypeMock Isolator (глузуючий фреймворк) нарешті допомогло ! Редагувати та продовжувати зараз працює !!!

Ось відповідь від підтримки TypeMock:

Далі вивчивши проблему редагування та продовження та поговоривши про це з Microsoft, ми дійшли висновку, що вона не може бути вирішена для Isolator. Ізолятор реалізує профіль CLR, і, згідно з нашими дослідженнями, після включення та приєднання профіля CLR, редагування та продовження автоматично відключається. Пробачте, кажу, що це більше не вважається помилкою, а скоріше обмеженням Isolator.


69

Інші застосовні рішення

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

  • Переконайтеся, що ви перебуваєте в режимі налагодження
  • Переконайтеся, що ви не запускаєте процес змішаного режиму
  • Спробуйте встановити ціль CPU на x86, а не AnyCPU (на комп'ютерах x64)
  • Зніміть прапорець Оптимізувати код у режимі налагодження у Властивості проекту-> Налагодження
  • Зніміть прапорець Увімкнути оптимізацію в розширених налаштуваннях компілятора
  • (ASP.NET) Перевірте відповідь нічного кодера, якщо це так
  • (ASP.NET) Перевірте цю відповідь (матрично), якщо це так
  • (ASP.NET) Переконайтеся, що у вас ввімкнено редагування та продовження на вкладці Веб (vs2010)
  • (ASP.NET) Перейдіть до Властивості> Веб> Сервери та переконайтесь, що ввімкнути " Увімкнути та продовжити" встановлено в розділі Використовувати сервер розвитку Visual Studio .
  • (ASP.NET WebAPI) Переконайтесь, що ви зупинилися на методі контролера, використовуючи точку розриву, перш ніж спробувати його відредагувати.
  • (vs2017) Перейдіть до Інструменти> Опції> Налагодження та зніміть прапорець (зняти позначку) "Редагувати та продовжити". Це насправді протилежне «звичайним» порадам (див. Деякі інші пункти у цій публікації). Це не дозволяє вам фактично вносити зміни в свою запущену програму (тобто не здійснює гарячої заміни змін, які ви робите) - це просто дозволяє редагувати ваш код (тобто запобігає набридливому повідомленню та "заблокує" ваш редактор ).
  • Перейдіть до Інструменти> Опції> Налагодження> Загальне та переконайтесь, що Потрібно встановити прапорець Потрібно , щоб вихідні файли точно відповідали оригінальній версії .
  • Поставте прапорець Увімкнути розподільник купи відладок Windows (лише для рідних) [VS Community 2017]
  • Ви використовуєте Microsoft Fakes? Це гальмує редагування та продовження.
  • Убийте всі екземпляри * .vshost.exe , вибравши Дерево завершення процесу у Диспетчері завдань . VS відновить правильний екземпляр.
  • Видаліть усі точки перерви за допомогою налагодження-> Видалити всі точки перерви
  • Увімкнення та продовження існує як в меню Інструменти> Параметри> Налагодження, так і в Налаштуваннях проекту . Обов’язково перевірте обидва місця. редагування та продовження не підтримується за допомогою розширеного налаштування Intellitrace.
  • Переконайтеся, що Інформація про налагодження у Властивості проекту> Збірка> Додатково> Виведення> Інформація про налагодження встановлена ​​на Повне
  • Деякі плагіни можуть заважати. Перевірте, відключивши / видаливши та повторивши спробу інших рішень.
  • Якщо ви не приділяєте достатньої уваги, помилка, яку ви отримаєте при спробі виправити це, може змінитися на щось інше, що простіше діагностувати. Наприклад, метод, що містить лямбда-вираз, не може підтримувати редагування та продовження.
  • Переконайтесь, що для системної змінної COR_ENABLE_PROFILINGне встановлено значення 1. Деякі профілі встановлюють це під час встановлення та залишають його після видалення. Відкрийте командний рядок і введіть, setщоб швидко перевірити, чи впливає ваша система, якщо так видаліть змінну або встановіть її на 0:

    • У Windows 8 і новіших версій знайдіть Система (Панель управління).
    • Клацніть посилання Розширені налаштування системи .
    • Клацніть Змінні середовища .
    • Видалити COR_ENABLE_PROFILING
  • Будьте в курсі непідтримуваних сценаріїв (як повідомлено у запитанні) та непідтримуваних змін .


* під «ти», я маю на увазі відвідувача сторінки, який забиває голову по клавіатурі, щоб знайти рішення.


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


5
Це було COR_ENABLE_PROFILING ... не маю уявлення, чому його встановили. Дякую. Перестань бити мою голову по клавіатурі.
Флоріан Лагг

2
Я спробував все, але не працював. Тоді я зрозумів, що я повинен бути в режимі перерви (налагодження-> зламати всі) або в точці перерви. Будь ласка, додайте це до свого списку. msdn.microsoft.com/en-us/library/7932e88z.aspx
Niloofar

1
Дякую, четвертий рядок "Зніміть прапорець" Оптимізувати код "для режиму налагодження в" Властивості проекту "
Алжон Ямаро

2
Єдине, що вирішило це для мене, тут не згадується: мені довелося відключити (зняти прапорець) параметр "Увімкнути редагування та продовжити" в меню Інструменти> Параметри> Налагодження. Це повна протилежність тому, що ви б інтуїтивно думали, але саме це зафіксувало для мене (тобто завадило це набридливе повідомлення і просто дозволило мені редагувати свій код).
лео

1
@leo Це вікі спільноти, щоб ви могли вільно редагувати. Чи не працює кнопка "редагування" для вас? Я бачу, у вас достатньо репутації для цього. Пс. Я додав посилання на вашу відповідь, щоб було менше дисперсій.
beppe9000

23

Якщо ви налагоджуєте додаток ASP.NET, перейдіть до властивостей> веб> Сервери та переконайтесь, що "Увімкнути та продовжити" встановлено прапорець Використовувати сервер розвитку Visual Studio.


3
також потрібно натиснути паузу під час налагодження, потім зможете редагувати код
Олексій Обухов

Якщо я використовую локальний iis, "включити і продовжувати" бажано
Хоштакіб

11

У мене була така ж проблема. Я навіть перевстановив VS 2008, але проблема не пішла. Однак коли я видалив усі точки перерви, то він почав працювати.

Debug->Delete All Breakpoints

Я думаю, що це сталося тому, що я видалив сторінку aspx, яка мала точки перелому у своєму коді, а потім створив ще одну сторінку з такою ж назвою. Це, мабуть, заплутало VS 2008 року.


5

Пару речей, щоб перевірити

  • Переконайтесь, що для компіляції встановлено значення Налагодження проти випуску
  • Переконайтеся, що ви не запускаєте процес змішаного режиму
  • Якщо на 64-бітній машині переконайтеся, що встановіть ціль CPU на x86, а не на AnyCPU

EDIT

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

Якщо це спростуватимуть нові проекти, то це може бути чимось ще більш тонким. Я б спробував наступне.

  • Резервне копіювання HKCU: \ Software \ Wow6432Node \ VisualStudio \ 9.0 (можливо, просто перейменуйте його)
  • Видаліть той самий ключ
  • Спробуйте докори ще раз

2
Що таке процес змішаного режиму? Я навіть спробував новий проект winforms.
нічний кодер

У мене немає HKCU: \ Software \ Wow6432Node \ node
nightcoder

@nightcoder, то спробуйте HKCU: \ Software \ Microsoft \ VisualStudio \ 9.0
JaredPar

5

Жодне з перерахованих вище рішень не працювало для мене (працює на 64-кратній машині).

Нарешті я натиснув 'advanced compiler settings'і НЕВЕРХОВАНО 'enable optimizations ', і тепер я можу переглядати код і редагувати під час налагодження.


2
Здається, це лише Visual Basic: msdn.microsoft.com/en-us/library/07bysfz2%28v=vs.100%29.aspx
Marcel

Для мене працює! VS2013, VB.Net, Frame 3.5
MiBol

1
А де ці налаштування?
vapcguy

5

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

Це означає, що ви не можете редагувати код, коли виконання не призупинено! Що стосується налагодження веб-проектів (ASP.NET), це дуже неінтуїтивно, оскільки вам часто хочеться вносити зміни між запитами. Наразі код вашої (ймовірно) налагодження не працює, але він також не призупинено!
Щоб вирішити це, ви можете натиснути «Перервати все» (або натиснути Ctrl+ Alt+ Break). Крім того, встановіть десь місце розриву (наприклад, у вашому Page_Loadвипадку), а потім перезавантажте сторінку, щоб виконання призупинилося, коли воно потрапить у точку розриву, і тепер ви можете редагувати код. Навіть код у .csфайлах.


4

Для мене з причини, яку я не розумію, для параметра "Створити інформацію про налагодження" в "Розширених налаштуваннях компілятора" було встановлено значення "лише для pdb", а не "повне"

За замовчуванням цей параметр завжди встановлений на "Повний", але загадковий полтергейст змінив цей параметр за минулу ніч. :)

PS Я перебуваю в Visual Basic .Net з Visual Studio 2010


4

Якщо вас турбує додаток ASP.NET, переконайтесь, що ви маєте редагувати та продовжувати активувати на вкладці веб (vs2010). Існував також окремий параметр для налагодження ASP.NET у попередніх версіях.

З повагою,

Адам.


4

Я виявив, що, хоча на вкладці "Створення та відладка" властивостей проекту встановлено "Налагодження", а всі інші налаштування є правильними, я все одно отримую повідомлення, однак після перекопування ще в меню "Створення" виберіть "Конфігураційний менеджер" ... і переконайтесь, що вибрано "Налагодження" і в двох місцях. Подивіться цифру ... скільки різних місць потрібно для встановлення налагодження ?????? незважаючи на те, що ви встановили Project-Configuration на налагодження, тоді в Build - Manager він не змінюється, тому ви змінили ту саму настройку, як і Конфігурація проекту - здається, знову проблема з мікрософт .......


4

Ця проблема пов'язана з налаштуваннями Intellitrace

Якщо параметр Intellitrace увімкнено, переконайтесь, що прапорець Intellitrace лише встановлений

Інакше це не дозволить редагувати та продовжувати ..

Якщо ви натиснете на параметри Intellitrace, ви побачите попередження.


Це проблема для мене!
beppe9000

Шукали всі параметри в інструментах Visual Studio для "Intellitrace", а в VS Community 2017. немає такої опції. Тут допомагає трохи більше деталей.
vapcguy

4

Наступна зйомка допомогла мені використовувати VS2010:

перейдіть до Інструменти, Параметри, Налагодження, Загальне та переконайтесь, що "Потрібно вимагати вихідних файлів, щоб вони точно відповідали оригінальній версії".


3

Це відбувається, коли налагоджувач не потрапив у точку розриву або ви не натиснули Break All (пауза). Не могло бути так просто?


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

3

Помилка говорить про можливу причину: "Код, який відладжувався, був оптимізований під час збирання або запуску". Перейдіть до Властивості проекту-> Налагодження та зніміть прапорець Оптимізувати код у режимі налагодження.


3

У мене була ця проблема в Microsoft Visual Studio 2008, і рішення легко. коли ви запускаєте проект, встановіть його в режимі "Налагодження", а не "Випуск". Рішення для інших людей може бути корисним.


2

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


1

У моєму випадку лише перезавантаження налаштувань налагодження за замовчуванням та встановлення IntelliTrace-> допомагають лише події Intellytrace


1

Деякі речі, які, здається, допомагають використовувати VS2010:

  • перейдіть до Інструменти, Параметри, Налагодження, Загальне та переконайтесь, що "Потрібно вимагати вихідних файлів, щоб вони точно відповідали оригінальній версії".
  • декілька екземплярів .vshost.exe можуть бути залишені, наприклад, від'єднання налагоджувача VS від зупиненого процесу. Це також буде заважати точкам перерви та компіляції. Використовуйте диспетчер завдань, вкладка Процеси, щоб знищити всі екземпляри .vshost.exe, клацнувши правою кнопкою миші кожен екземпляр і вибравши Дерево завершення процесу. VS створить новий екземпляр.

1

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


1

Я вніс усі зміни, про які йдеться у кожній іншій відповіді, і жодна не працювала. Що я навчився? Увімкнення та продовження існує як у меню Інструменти> Параметри> Налагодження, так і в налаштуваннях проекту. Після того як я перевірив обидва, увімкнути і продовжувати працював для мене.


3
Які налаштування проекту? Ви занадто розпливчасті
Adaptabi

@Adaptabi Вони мали на увазі, якщо ви клацніть правою кнопкою миші назву проекту, натисніть кнопку Властивості, потім (якщо це веб-проект) натисніть Інтернет, там встановлено прапорець, щоб переконатися, що там "Увімкнути редагування та продовжити".
vapcguy

1

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

Переконайтесь, що для вашої інформації про налагодження спочатку встановлено "повне"!

Властивості проекту> Збірка> Додатково> Виведення> Інформація про налагодження


1

Здається, це нелогічно, але єдиним способом було відключення редагування та продовження з параметрів VS 2017 ... Потім редагування AspNet і продовження роботи почали ...


Саме так! Це нелогічно , але то , що працює для мене , як добре живеться Дис вмілим «редагувати і продовжувати». Він не стане "гарячим" заміною внесених вами змін, але принаймні ви можете просто відредагувати свій код, і тоді це набере чинності після перезавантаження програми.
лео

1

те, що для мене спрацювало, зніміть прапорець "Використовувати керований режим сумісності" під пунктом

Інструменти -> Опції -> Налагодження

TBN: перевірка або зняття прапорця "Вимагати, щоб вихідний файл точно відповідав оригінальній версії", схоже, не впливає на E&C

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


1

Увімкніть редагування та продовження роботи лише запуск IIS Express. Не працюйте в локальному ISS або зовнішньому хості.


1

У мене виникло це дратівливе питання, оскільки я модернізував свій VS 2019 до 16.4.3 і спричинив мені великий головний біль.
Нарешті я вирішив проблему таким чином:

1. Зупиніть налагодження
2. Виберіть рішення з "Провідника рішень"
3. У вікні " Властивості" змініть властивість "Активний конфігурація" З "Випуск | будь-якого процесора" на "Налагодження | Будь-який процесор"
4 . В Debug> параметри> Загальні Перевірте Змінити і продовжити прапорець

це працює для мене, і сподіваюся , що це працює для вас теж.



0

У мене це було в файлі пов'язаного класу. Решта проекту дозволила E&C, але я отримав таку ж помилку під час редагування пов'язаного файлу. Рішенням було розбити пов'язаний файл у власному проекті та посилатися на проект.


0

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

Отже, мені довелося вивантажити блок-тестовий проект і продовжити налагодження EnC.


0

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

Я натиснув "Unload" на проект бази даних, і все зараз працює солодко.


0

Для VS2017 це може допомогти видалити файл .suo у вашому рішенні, він працював на мене. :)

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