Метод ICorDebugModule2::ApplyChanges

Применяет изменения в метаданных и изменениях в коде общего промежуточного языка (CIL) к выполняемой процедуре.

Синтаксис

HRESULT ApplyChanges (
    [in] ULONG                       cbMetadata,
    [in, size_is(cbMetadata)] BYTE   pbMetadata[],
    [in] ULONG                       cbIL,
    [in, size_is(cbIL)] BYTE         pbIL[]
);

Параметры

cbMetadata [in] Размер в байтах разностных метаданных.

pbMetadata [in] Буфер, содержащий разностные метаданные. Адрес буфера возвращается из метода IMetaDataEmit2::SaveDeltaToMemory .

Относительные виртуальные адреса (RVAs) в метаданных должны быть относительными к началу кода CIL.

cbIL [in] Размер в байтах кода разностного CIL.

pbIL [in] Буфер, содержащий обновленный код CIL.

Замечания

Параметр pbMetadata находится в специальном формате разностных метаданных (как выходные данные IMetaDataEmit2::SaveDeltaToMemory). pbMetadata принимает предыдущие метаданные в качестве основы и описывает отдельные изменения, применяемые к этой базе.

Напротив, pbIL[параметр ] содержит новый CIL для обновленного метода и предназначен для полной замены предыдущего CIL для этого метода.

При создании разностного CIL и метаданных в памяти отладчика отладчик вызывает ApplyChanges отправку изменений в среду CLR. Среда выполнения обновляет свои таблицы метаданных, помещает новый CIL в процесс и настраивает JIT-компиляцию нового CIL. При применении изменений отладчик должен вызвать IMetaDataEmit2::ResetENCLog , чтобы подготовиться к следующему сеансу редактирования. Отладчик может продолжить процесс.

Всякий раз, когда отладчик вызывает ApplyChanges модуль с разностными метаданными, он также должен вызывать IMetaDataEmit::ApplyEditAndContinue с одинаковыми разностными метаданными на всех его копиях метаданных этого модуля, за исключением копии, используемой для выдачи изменений. Если копия метаданных как-то перестает синхронизироваться с фактическими метаданными, отладчик всегда может выбросить копию и получить новую копию.

ApplyChanges Если метод завершается ошибкой, сеанс отладки находится в недопустимом состоянии и должен быть перезапущен.

Требования

Платформы: см. раздел Требования к системе.

Заголовок: CorDebug.idl, CorDebug.h

Библиотека: CorGuids.lib

версии платформа .NET Framework: Доступно с версии 2.0