Изменить и продолжить: «Изменения недопустимы, если…»


108

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

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

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

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

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

Функция «Изменить и продолжить» недоступна в следующих сценариях отладки:

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

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

  • Отладка SQL.

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

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

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

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

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

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

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

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

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


2
Вы работаете в режиме выпуска? Вы используете X64?
Sam Saffron,

Действительно ли метод, который вы пытаетесь использовать для E&C, короткий? возможно, он был встроен (хотя я думаю, что встраивание не происходит при отладке)
Sam Saffron

Он не работает ни с какими методами, ни с очень короткими, ни с очень длинными.
nightcoder

Вы еще не пробовали восстановить установку?
Ричард Энтони Хейн

3
Думаю, я должен добавить, что E&C - довольно сложная функция. Матрица тестов отладчика огромна, и заставить E&C работать в каждой комбинации будет чрезвычайно сложно. Но это тоже действительно важная функция, поэтому мы взяли на себя множество ограничений, чтобы убедиться, что она будет выпущена. В рамках намеренных ограничений, которые мы наложили на него, это одна из самых качественных функций, которые мы предоставили.
Джей Базузи

Ответы:


21

Наконец-то я решил проблему: УДАЛИТЬ Gallio

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

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

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

Вот ответ от службы поддержки TypeMock:

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


69

Другие применимые решения

Ниже приведен неполный неупорядоченный список возможных решений, которые можно попробовать *, если вы пытаетесь быстро исправить «Изменить и продолжить».

  • Убедитесь, что вы находитесь в режиме отладки
  • Убедитесь, что вы не запускаете процесс в смешанном режиме
  • Попробуйте установить целевой процессор на x86, а не на AnyCPU (на машинах x64)
  • Снимите флажок Оптимизировать код для режима отладки в свойствах проекта-> Отладка.
  • Снимите флажок Включить оптимизацию в расширенных настройках компилятора
  • (ASP.NET) Проверьте ответ nightcoder, если это так.
  • (ASP.NET) Проверьте этот ответ (по матрице), если это так
  • (ASP.NET) Убедитесь, что на вкладке « Интернет » включен параметр « Изменить и продолжить » (vs2010).
  • (ASP.NET) Перейдите в « Свойства»> «Интернет»> «Серверы» и убедитесь, что в разделе « Использовать сервер разработки Visual Studio» установлен флажок «Включить и продолжить» .
  • (ASP.NET WebAPI) Убедитесь, что вы остановились в методе контроллера, используя точку останова, прежде чем пытаться изменить его.
  • (vs2017) Перейдите в Инструменты> Параметры> Отладка и снимите флажок «Изменить и продолжить». На самом деле это противоположность «общепринятому» совету (см. Некоторые другие моменты в этом посте). Он не позволяет вам фактически вносить изменения в вашу запущенную программу (т. Е. Не выполняет горячую замену вносимых вами изменений кода) - он просто позволяет вам редактировать код (т. Е. Предотвращает появление этого раздражающего сообщения и «блокирует» ваш редактор. ).
  • Перейдите в Инструменты> Параметры> Отладка> Общие и убедитесь, что флажок Требовать, чтобы исходные файлы точно соответствовали исходной версии , снят.
  • Установите флажок Включить распределитель кучи отладки Windows (только в собственном коде) [VS Community 2017]
  • Вы используете Microsoft Fakes? Запрещает Edit & Continue.
  • Убить всех * .vshost.exe экземпляров, выбрав End Process Tree в диспетчере задач . VS восстановит правильный экземпляр.
  • Удалите все точки останова с помощью Debug-> Delete All Breakpoints
  • Включить и продолжить есть как в меню « Инструменты»> «Параметры»> «Отладка», так и в настройках проекта . Обязательно проверьте оба места. Редактировать и продолжить не поддерживается с расширенной настройкой 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 03

1
У меня работает, спасибо, четвертая строка «Снимите флажок Оптимизировать код для режима отладки в свойствах
проекта-

2
Единственное, что решило эту проблему для меня, здесь не упоминается: мне пришлось отключить (снять отметку) параметр «Разрешить редактирование и продолжить» в меню «Инструменты»> «Параметры»> «Отладка». Это полная противоположность тому, что вы могли бы интуитивно подумать, но это то, что исправило это для меня (т.е. предотвратило это раздражающее сообщение и просто позволило мне отредактировать мой код).
leo

1
@leo Это вики сообщества, так что вы можете свободно редактировать. Вам не подходит кнопка «Редактировать»? Я вижу, у тебя достаточно репутации для этого. Ps. Я добавил ссылку на ваш ответ, чтобы было меньше разброса.
beppe9000 02

23

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


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

Если я использовать местные IIS, «включить и продолжить» является desable
Khoshtarkib

11

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

Debug->Delete All Breakpoints

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


5

Пара вещей, которые нужно проверить

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

РЕДАКТИРОВАТЬ

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

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

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

2
Что такое смешанный режим? Я даже пробовал новый проект winforms.
nightcoder

У меня нет узла HKCU: \ Software \ Wow6432Node \
nightcoder

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

5

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

Наконец, я нажал 'advanced compiler settings'и НЕ ПРОВЕРИЛ 'enable optimizations », и теперь я могу выполнять пошаговый код и редактировать во время отладки.


2
Кажется, это только Visual Basic: msdn.microsoft.com/en-us/library/07bysfz2%28v=vs.100%29.aspx
Марсель

Работает для меня! VS2013, VB.Net, Frame 3.5
MiBol

1
А где эти настройки?
vapcguy

5

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

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


4

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

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

PS Я в Visual Basic .Net с Visual Studio 2010


4

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

С Уважением,

Адам.


4

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


4

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

Если Intellitrace включен, убедитесь, что выбрано только событие Intellitrace.

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

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


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

Поискал все параметры в инструментах Visual Studio для "Intellitrace", но в VS Community 2017 такой возможности нет. Немного подробнее здесь поможет.
vapcguy

4

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

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


3

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


Это случается, когда отладчик достигает точки останова, и я пытаюсь что-то изменить в коде.
nightcoder

3

Ошибка указывает, что возможная причина: «отлаживаемый код был оптимизирован во время сборки или выполнения». Перейдите в Project Properties-> Debug и снимите флажок Optimize Code для режима отладки.


3

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


2

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


1

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


1

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

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

1

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


1

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


3
Какие настройки проекта? Вы слишком расплывчаты
Adaptabi

@Adaptabi Они имели в виду, что если вы щелкните правой кнопкой мыши имя своего проекта, выберите «Свойства», затем (если это веб-проект) щелкните «Интернет», там есть флажок, чтобы убедиться, что там установлен флажок «Разрешить редактирование и продолжить».
vapcguy

1

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

Убедитесь, что ваша информация об отладке установлена ​​на "полную"!

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


1

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


Именно! Это нелогично, но у меня тоже сработало отключение функции «редактировать и продолжать». Он не будет выполнять «горячую замену» внесенных вами изменений, но, по крайней мере, вы можете просто отредактировать свой код, и тогда он вступит в силу после перезапуска приложения.
leo

1

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

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

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

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


1

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


1

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

1. Остановить отладку
2. Выберите решение в «Обозревателе решений»
3. В окне « Свойства» измените свойство «Активная конфигурация» с «Выпуск | Любой ЦП» на «Отладка | Любой ЦП»
4 В разделе «Отладка»> «Параметры»> «Общие» установите флажок « Изменить и продолжить».

Это сработало для меня и надеюсь, что это сработает и для вас.



0

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


0

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

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


0

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

Я нажал кнопку «Выгрузить» в проекте базы данных, и теперь все работает нормально.


0

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.