ICorDebugModule2::ApplyChanges (Método)
Aplica los cambios en los metadatos y los cambios en el código de Lenguaje intermedio (MSIL) de Microsoft al proceso en ejecución.
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 (RVA) en los metadatos deberían ser relativas al inicio del código de MSIL.
cbIL
[in] Tamaño, en bytes, del código delta de MSIL.pbIL
[in] Búfer que contiene el código de MSIL actualizado.
Comentarios
El parámetro pbMetadata tiene un formato de metadatos delta especial (por ser resultado de IMetaDataEmit2::SaveDeltaToMemory). pbMetadata toma los metadatos anteriores como base y describe los cambios individuales que se van a aplicar a esa base.
Por el contrario, el parámetro pbIL[] contiene el nuevo MSIL para el método actualizado y tiene por objeto reemplazar completamente el MSIL anterior de ese método
Cuando el MSIL delta y los metadatos se han creado en la memoria del depurador, el depurador llama a ApplyChanges para enviar los cambios al Common Language Runtime. El motor en tiempo de ejecución actualiza las tablas de metadatos, coloca el nuevo MSIL en el proceso y configura una compilación Just-in-time (JIT) del nuevo MSIL. Una vez que se aplican los cambios, el depurador debería llamar a IMetaDataEmit2::ResetENCLog para preparar la siguiente sesión de edición. A continuación, el depurador debe continuar el proceso.
Siempre que el depurador llama a ApplyChanges en un módulo que tiene los metadatos delta, deberá también llamar a IMetaDataEmit::ApplyEditAndContinue con los mismos metadatos delta de todas las copias de los metadatos de ese módulo, a excepción de la copia utilizada para emitir los cambios. Si una copia de los metadatos no está sincronizada con los metadatos reales, el depurador siempre puede deshacerse de esa copia y obtener una nueva.
Si el método ApplyChanges produce un error, la sesión de depuración pasará a un estado no válido y deberá reiniciarse.
Requisitos
Plataformas: vea Requisitos de sistema de .NET Framework.
Encabezado: CorDebug.idl, CorDebug.h
Biblioteca: CorGuids.lib
Versiones de .NET Framework: 4, 3.5 SP1, 3.5, 3.0 SP1, 3.0, 2.0 SP1, 2.0