Изменить и продолжить: "Изменения не допускаются, когда..."

Даже если я создаю чистый проект WinForms, Edit и Continue не работают и дают мне ошибку:

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

  1. Параметр "Редактировать и продолжить" отмечен в "Инструменты" → "Параметры" → "Отладка".
  2. Оптимизация не включена.
  3. Кажется, что никакой управляемый профилировщик не настроен.
  4. Я работаю в режиме отладки
  5. Я работаю на процессорах x64 и 32-разрядных Windows XP, но настройка платформы на x86 вместо AnyCpu не помогает.
  6. Восстановление установки Visual Studio не помогает.

Я также нашел эту статью на веб-сайте MSDN:

Неподдерживаемые сценарии

"Редактировать и продолжить" недоступно в следующих сценариях отладки:

  • Отладка в Windows 98.

  • Отладка смешанного режима (собственная/управляемая).

  • Отладка SQL.

  • Отладка дампа доктора Ватсона.

  • Редактирование кода после необработанного исключения, когда опция "Отключить стек вызовов на необработанных исключениях" не выбрана.

  • Отладка встроенного приложения времени исполнения.

  • Отладка приложения с Attach, а не запуск приложения с помощью меню "Пуск" в меню "Отладка".

  • Отладка оптимизированного кода.

  • Отладка управляемого кода, когда целью является 64-битное приложение. Если вы хотите использовать Edit и Continue, вы должны установить цель на x86. (Свойства проекта, вкладка "Компиляция", "Настройка расширенного компилятора").

  • Отладка старой версии вашего кода после того, как новая версия не смогла построить из-за ошибок сборки.

Но я могу ответить "Нет" на каждый элемент в этом списке.

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

Ответ 1

Наконец-то я решил решить эту проблему: UNINSTALL Gallio

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

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

PS. Отредактировано ночным кодером:
В моем случае отключить TypeMock Isolator (mocking framework) наконец помог! Редактирование и продолжение теперь работает!!!

Вот ответ от поддержки TypeMock:

После дальнейшего просмотра и продолжать выпуск, и разговаривать об этом с Microsoft, мы достигли вывод не может быть разрешен для изолятора. Изолятор реализует Профилировщик CLR, и согласно нашим исследования, как только профилировщик CLR разрешено и подключено, редактируется и continue автоматически отключается. Мне жаль, что это уже не считается ошибкой, а скорее ограничение Изолятора.

Ответ 2

Применимые решения

Вот неполный, неупорядоченный список возможных решений, которые можно попробовать, если вы * хотите быстро исправить Редактировать и продолжить:

  • Убедитесь, что вы находитесь в режиме отладки
  • Убедитесь, что вы не запускаете смешанный режим
  • Попробуйте установить целевой процессор на x86, а не AnyCPU (на машинах x64)
  • Снимите флажок "Оптимизировать код" для режима отладки в проекте Properties-> Отладка
  • Снимите флажок Включить оптимизации в дополнительных настройках компилятора
  • (ASP.NET) Проверьте ответ ночного кодера, если это так
  • (ASP.NET) Проверьте этот ответ (по matrixugly), если это так
  • (ASP.NET) Убедитесь, что на вкладке "Интернет" включены "Изменить и продолжить" (vs2010)
  • (ASP.NET) Перейдите в "Свойства"> "Интернет"> "Серверы" и убедитесь, что в разделе "Использовать Visual Studio Development Server" установлен флажок "Включить и продолжить".
  • (ASP.NET WebAPI) Убедитесь, что вы остановились в методе Controller с использованием точки останова, прежде чем пытаться редактировать ее.
  • Перейдите в Инструменты> Параметры> Отладка> Общие и убедитесь, что флажок Требовать, чтобы исходные файлы в точности соответствовали исходной версии, не отмечен.
  • Вы используете Microsoft Fakes? Это запрещает Edit & Continue.
  • Убейте все экземпляры *.vshost.exe, выбрав Конечное дерево процессов в диспетчере задач. VS восстановит правильный экземпляр.
  • Удалите все точки останова с помощью Debug-> Удалить все точки останова
  • Включить и продолжить можно в меню "Инструменты"> "Параметры"> "Отладка", а также в настройках проекта. Обязательно проверьте оба места. edit & Continue не поддерживается с расширенной настройкой Intellitrace.
  • Убедитесь, что информация об отладке в Свойствах проекта> Сборка> Дополнительно> Вывод> Отладочная информация установлена на Полный
  • Некоторый плагин может мешать. Проверьте, отключив/удалив, а затем повторите попытку других решений.
  • Если вы не уделяете достаточно внимания, ошибка, которую вы получаете, пытаясь исправить это, может измениться на что-то еще, что будет легче диагностировать. Например, метод, содержащий лямбда-выражение, не может поддерживать редактирование и продолжение.
  • Убедитесь, что системная переменная COR_ENABLE_PROFILING не установлена в 1. Некоторые профилировщики устанавливают это при установке и оставляют так после удаления. Откройте командную строку и введите set чтобы быстро проверить, не подвержена ли она вашей системе, если это так, удалите переменную или установите для нее значение 0:

    • В Windows 8 и выше выполните поиск системы (панель управления).
    • Нажмите на ссылку Расширенные настройки системы.
    • Нажмите Переменные среды.
    • Удалить COR_ENABLE_PROFILING
  • Помните о неподдерживаемых сценариях (как указано в вопросе) и о неподдерживаемых изменениях.

* под "вы" я имею в виду посетителя страницы, который бьет головой по клавиатуре, чтобы найти решение.

Не стесняйтесь редактировать этот ответ, если у вас есть другие советы!

Ответ 3

Если вы отлаживаете приложение ASP.NET, откройте "Свойства" > "Веб" > "Серверы" и убедитесь, что "Включить и продолжить" отмечен в разделе "Использование Visual Studio Development Server".

Ответ 4

У меня была та же проблема. Я даже переустановил VS 2008, но проблема не исчезла. Однако, когда я удалил все точки останова, он начал работать.

Debug->Delete All Breakpoints

Я думаю, что это произошло, потому что я удалил страницу aspx с точками разрыва в своем коде, а затем создал другую страницу с тем же именем. Вероятно, это путало VS 2008.

Ответ 5

Несколько вещей, чтобы проверить

  • Убедитесь, что для вашей компиляции установлено значение Отладка и выпуск
  • Убедитесь, что вы не запускаете процесс смешанного режима.
  • Если на 64-битной машине убедитесь, что целевой объект ЦП установлен на x86, а не на AnyCPU

EDIT

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

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

  • Резервное копирование HKCU:\Software\Wow6432Node\VisualStudio\9.0 (возможно, просто переименуйте его)
  • Удалить тот же ключ
  • Повторите попытку повторно

Ответ 6

Ни один из вышеперечисленных решений не работал у меня (работает на машине 64x).

Наконец, я нажал на 'advanced compiler settings' и UNCHECKED 'enable optimizations ', и теперь я могу выполнить код и отредактировать его во время отладки.

Ответ 7

Если ваша проблема связана с приложением ASP.NET, убедитесь, что вы редактируете и продолжаете работу на веб-вкладке (vs2010). В предыдущих версиях была также отдельная настройка для отладки ASP.NET.

Привет,

Адам.

Ответ 8

Я обнаружил, что несмотря на то, что в свойствах проекта вкладка build и debug установлена ​​в Debug, и все остальные настройки верны, я все равно получаю сообщение, однако после того, как выкапывают еще несколько в меню "Построение" выберите "Диспетчер конфигураций"... и убедитесь, что Debug также выбран в двух местах. go figure... сколько разных мест они должны установить debug?????? даже если вы настроили Project - Configuration для Debug, тогда в Build-Manager он не изменился, поэтому вы изменили тот же параметр там, а Project Configuration - снова кажется проблемой Microsoft.........

Ответ 9

Эта проблема связана с настройкой Intellitrace

Если включена функция Intellitrace, убедитесь, что событие Intellitrace отмечено только

В противном случае это не позволит редактировать и продолжить.

Если вы нажмете на опции Intellitrace, вы увидите предупреждения.

Ответ 10

Следующая съемка помогла мне использовать VS2010:

перейдите в раздел "Инструменты", "Параметры", "Отладка", "Общие" и убедитесь, что "Требовать, чтобы исходные файлы соответствовали оригинальной версии" не отмечен.

Ответ 11

Для меня по той причине, что я не понимаю, параметр "Генерировать информацию об отладке" в "Усовершенствованных настройках компилятора" был установлен на "pdb-only" вместо "Full".

По умолчанию этот параметр всегда установлен на "Полный", но таинственный полтергейст изменил этот параметр прошлой ночью.:)

P.S. Я в Visual Basic.Net с Visual Studio 2010

Ответ 12

У меня возникла эта проблема в Microsoft Visual Studio 2008, и это решение легко. когда вы запускаете свой проект, установите режим "Отладка", а не "Выпуск". Может быть полезно другое решение для людей.

Ответ 13

"Редактировать и продолжить", когда он включен, позволит вам редактировать код, когда он находится в режиме прерывания: например. за счет того, что выполнение приостановлено исключением или ударом точки останова.

Это означает, что вы не можете редактировать код, когда выполнение не приостанавливается! Когда дело доходит до веб-проектов отладки (ASP.NET), это очень неинтуитивно, так как вы часто хотите делать изменения между запросами. На данный момент код вашей (возможно) отладки не запущен, но он также не приостановлен!
Чтобы решить эту проблему, вы можете нажать "Разбить все" (или нажать Ctrl + Alt + Break). В качестве альтернативы, установите точку останова где-нибудь (например, в вашем событии Page_Load), затем перезагрузите страницу, чтобы выполнение приостановилось, когда оно попало в точку останова, и теперь вы можете редактировать код. Даже код в файлах .cs.

Ответ 14

Это происходит, когда отладчик не ударил точку останова, или вы не нажали кнопку "Разбить все" (пауза). Не может быть так просто?

Ответ 15

Ошибка говорит о возможной причине: "отлаживаемый код был оптимизирован при сборке или времени выполнения". Перейдите в "Свойства проекта" → "Отладка" и снимите флажок "Оптимизировать код" для режима "Отладка".

Ответ 16

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

Ответ 17

Некоторые вещи, которые, казалось, помогли использовать VS2010:

  • перейдите в раздел "Инструменты", "Параметры", "Отладка", "Общие" и убедитесь, что "Требовать, чтобы исходные файлы соответствовали оригинальной версии" не отмечен.
  • несколько экземпляров .vshost.exe могут быть оставлены от, например, отключение отладчика VS от остановленного процесса. Это также будет мешать точкам останова и компиляции. Используйте вкладку "Диспетчер задач", "Процессы", чтобы убить все экземпляры .vshost.exe, щелкнув правой кнопкой мыши каждый экземпляр и выбрав "Окончание дерева процессов". VS создаст новый экземпляр.

Ответ 18

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

Ответ 19

Я сделал все изменения, упомянутые в каждом другом ответе, и никто не работал. Что я узнал? Включить и продолжить существует в меню "Сервис" > "Параметры" > "Отладка", а также в настройках проекта. После того, как я проверил оба варианта, Enable и Continue работали для меня.

Ответ 20

Я столкнулся с этим сегодня - оказывается, что если для параметра Debug Info установлено значение pdb-only (или нет, я думаю), это предотвратит работу Edit и Continue.

Удостоверьтесь, что ваша функция Debug Info установлена ​​на "full" сначала!

Свойства проектa > Сборкa > Дополнительно > Вывод > Информация об отладке

Ответ 21

то, что сработало для меня, сняло флажок "Использовать режим управляемой совместимости" в

Инструменты → Параметры → Отладка

TBN: проверка или снятие флажка "Требовать, чтобы исходный файл соответствовал оригинальной версии", похоже, не влияет на E & C

Надеюсь, это поможет.

Ответ 22

Включить редактирование и продолжить работу только с IIS Express. Не работайте в локальном ISS или внешнем хосте.

Ответ 23

В моем случае только переустановка настроек дефолтора по умолчанию и установка IntelliTrace- > только событий intellytrace помогают

Ответ 24

embed interop types визуальная студия должна быть установлена ​​на false

Ответ 25

У меня это произошло в связанном файле класса. Остальная часть проекта разрешала E & C, но я получил ту же ошибку, что и редактирование связанного файла. Решение заключалось в том, чтобы разбить связанный файл на собственный проект и ссылаться на проект.

Ответ 26

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

Следовательно, мне пришлось выгрузить проект unit-test и продолжить отладку EnC.

Ответ 27

У меня был проект базы данных в решении, который остановил проект веб-форм от редактирования.

Я щелкнул "Разгрузить" в проекте базы данных, и теперь все работает сладко.

Ответ 28

Для VS2017 это может помочь удалить файл .suo в вашем решении, это сработало для меня.:)

Ответ 29

Я столкнулся с той же проблемой в Visual Studio 2005. Моя конфигурация - 64 бита. Он отлично работал на одном из VS-решений, но не на другом. Я заметил, что я только включил "Включить редактирование и продолжить" для проекта, где я хотел внести изменения в режим отладки. Это окончательно решило для меня, когда я выбрал "Включить и продолжить" для моего запуска проекта.

Изменений конфигурации не было, кроме разрешения и необходимости.

Ответ 30

Кажется нелогичным, но единственный способ - отключить редактирование и продолжить работу с опциями VS 2017... Затем AspNet редактирует и продолжает работать...