Поделиться через


Поддерживаемые изменения кода (C#)

Обновлен: Ноябрь 2007

Этот раздел применим для следующих версий.

Выпуск

Visual Basic

C#

C++

Web Developer

Экспресс-выпуск

Тема не применяется Тема применяется Тема не применяется Тема применяется

Standard

Тема не применяется Тема применяется Тема не применяется Тема применяется

Pro и Team

Тема не применяется Тема применяется Тема не применяется Тема применяется

Условные обозначения:

Тема применяется

Применимо

Тема не применяется

Неприменимо

Тема применяется, но команда по умолчанию сокрыта

Команда или команды по умолчанию скрыты.

Средство "Изменить и продолжить" обрабатывает большинство типов изменений кода внутри тела метода. При этом, однако, большинство изменений за пределами тела метода и некоторые изменения в теле метода во время отладки применены быть не могут. Чтобы подобные неподдерживаемые изменения вступили в силу, необходимо остановить отладку и заново запустить новую версию кода.

Во время сеанса отладки к коду на языке C# не могут быть применены следующие изменения:

  • Изменение текущего или любого другого активного оператора.

    К активным операторам относятся все те операторы внутри функций из стека вызовов, вызов которых выполнялся для перехода к текущему оператору.

    Текущий оператор выделяется в окне исходного кода желтым цветом фона. Прочие активные операторы выделяются затенением, и доступны только для чтения. Эти используемые по умолчанию цвета можно изменить в диалоговом окне Параметры.

  • Изменения глобальных символов, в том числе:

    • Добавление новых типов;

    • Добавление методов типа;

    • Изменение подписи типа;

    • Добавление полей, событий и свойств типа.

  • Редактирование анонимного метода или метода, содержащего анонимный метод. Такие методы помечаются затененным фоном.

  • Добавление нового анонимного метода.

  • Добавление, удаление или изменение атрибутов.

  • Добавление, удаление или изменение директив using.

  • Удаление или изменение локальных переменных. Добавление локальных переменных допускается.

  • Включение активного оператора в блоки foreach, using или lock.

  • Изменение метода, содержащего оператор yield return или yield break.

  • Изменение конструктора с полем, которое инициализируется анонимным методом.

Небезопасный код

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

  • Операция "Изменить и продолжить" не поддерживает изменения небезопасного кода, в котором осуществляется выход из метода, содержащего оператор stackalloc. Это относится только к активным методам. Дополнительные сведения см. в разделе Активные операторы.

Исключения

Операция "Изменить и продолжить" поддерживает изменения блоков catch, finallyи try за некоторыми исключениями для блоков в активных методах (например, в методах, которые в настоящее время находятся в стеке вызовов).

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

    • Включение активного оператора в блок catch или finally.

    • Добавление более шести вложенных обработчиков исключений.

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

    • Включение активного оператора в блок catch, finally или try.

    • Добавление более шести вложенных обработчиков исключений.

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

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

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

  • Отладка кода LINQ. Дополнительные сведения см. в разделе Режим "Изменить и продолжить" с LINQ.

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

  • Отладка кода SQL;

  • Отладка дампа средства Dr.Watson;

  • Редактирование кода после необработанного исключения при выключенном режиме "Очищать стек вызовов от кадров необработанных исключений";

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

  • Отладка приложения, для которого была выполнена команда Присоединиться к вместо выполнения приложения путем выбора команды Пуск в меню Отладка;

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

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

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

См. также

Задачи

Практическое руководство. Использование режима "Изменить и продолжить" (C#)

Ссылки

Режим "Изменить и продолжить" (Visual C#)

Другие ресурсы

Ошибки и предупреждения режима "Изменить и продолжить" (C#)