Метод 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