Поддерживаемые изменения кода (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#)