Método ICorDebugModule2::ApplyChanges

Aplica as alterações nos metadados e as alterações no código CIL (linguagem intermediária comum) ao processo em execução.

Sintaxe

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

Parâmetros

cbMetadata [em] Tamanho, em bytes, dos metadados delta.

pbMetadata [em] Buffer que contém os metadados delta. O endereço do buffer é retornado do método IMetaDataEmit2::SaveDeltaToMemory.

Os endereços virtuais relativos (RVAs) nos metadados devem ser relativos ao início do código CIL.

cbIL [em] Tamanho, em bytes, do código CIL delta.

pbIL [em] Buffer que contém o código CIL atualizado.

Comentários

O parâmetro pbMetadata está em um formato de metadados delta especial (conforme gerado por IMetaDataEmit2::SaveDeltaToMemory). pbMetadata usa metadados anteriores como base e descreve as alterações individuais a serem aplicadas a essa base.

Em contraste, o pbIL[parâmetro ] contém a nova CIL para o método atualizado e destina-se a substituir completamente a CIL anterior para esse método

Quando a CIL delta e os metadados foram criados na memória do depurador, o depurador chama ApplyChanges para enviar as alterações para o CLR (Common Language Runtime). O tempo de execução atualiza suas tabelas de metadados, coloca a nova CIL no processo e configura uma compilação just-in-time (JIT) da nova CIL. Quando as alterações tiverem sido aplicadas, o depurador deverá chamar IMetaDataEmit2::ResetENCLog para se preparar para a próxima sessão de edição. Em seguida, o depurador pode continuar o processo.

Sempre que o depurador chama ApplyChanges em um módulo que tem metadados delta, ele também deve chamar IMetaDataEmit::ApplyEditAndContinue com os mesmos metadados delta em todas as suas cópias dos metadados desse módulo, exceto pela cópia usada para emitir as alterações. Se uma cópia dos metadados de alguma forma ficar fora de sincronia com os metadados reais, o depurador sempre poderá descartar essa cópia e obter uma nova.

Se o método ApplyChanges falhar, a sessão de depuração estará em um estado inválido e deverá ser reiniciada.

Requisitos

Plataformas: confira Requisitos do sistema.

Cabeçalho: CorDebug.idl, CorDebug.h

Biblioteca: CorGuids.lib

Versões do .NET Framework: disponíveis desde 2.0