Compartir a través de


ICorDebugModule2::ApplyChanges (Método)

Aplica los cambios en los metadatos y los cambios en el código de lenguaje intermedio común (CIL) al proceso en ejecución.

Sintaxis

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

Parámetros

cbMetadata [in] Tamaño, en bytes, de los metadatos delta.

pbMetadata [in] Búfer que contiene los metadatos delta. La dirección del búfer se devuelve del método IMetaDataEmit2::SaveDeltaToMemory.

Las direcciones virtuales relativas (RVAs) de los metadatos deben ser relativas al inicio del código CIL.

cbIL [in] Tamaño, en bytes, del código CIL delta.

pbIL [in] Búfer que contiene el código CIL actualizado.

Comentarios

El parámetro pbMetadata está en un formato de metadatos delta especial (como salida por IMetaDataEmit2::SaveDeltaToMemory). pbMetadata toma metadatos anteriores como base y describe los cambios individuales que se aplicarán a esa base.

En cambio, el pbIL[parámetro ] contiene la nueva CIL para el método actualizado y está pensada para reemplazar completamente la CIL anterior para ese método.

Cuando se han creado la CIL delta y los metadatos en la memoria del depurador, el depurador llama ApplyChanges a para enviar los cambios a Common Language Runtime (CLR). El tiempo de ejecución actualiza sus tablas de metadatos, coloca la nueva CIL en el proceso y configura una compilación Just-In-Time (JIT) de la nueva CIL. Cuando se hayan aplicado los cambios, el depurador debe llamar a IMetaDataEmit2::ResetENCLog para prepararse para la siguiente sesión de edición. Después, el depurador puede continuar el proceso.

Cada vez que el depurador llama ApplyChanges a en un módulo que tiene metadatos delta, también debe llamar a IMetaDataEmit::ApplyEditAndContinue con los mismos metadatos delta en todas sus copias de los metadatos de ese módulo, excepto la copia utilizada para emitir los cambios. Si una copia de los metadatos deja de estar sincronizada con los metadatos reales, el depurador siempre puede eliminar esa copia y obtener una nueva copia.

Si se produce un error en el método ApplyChanges, la sesión de depuración está en un estado no válido y se debe reiniciar.

Requisitos

Plataformas: Vea Requisitos de sistema.

Encabezado: CorDebug.idl, CorDebug.h

Biblioteca: CorGuids.lib

Versiones de .NET Framework: disponible a partir de la versión 2.0