Partilhar via


Método ICorDebugModule2::ApplyChanges

Aplica as alterações nos metadados e as alterações no código da linguagem intermediária comum (CIL) 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.

Observações

O pbMetadata parâmetro está em um formato de metadados delta especial (como saída por IMetaDataEmit2::SaveDeltaToMemory). pbMetadata usa metadados anteriores como base e descreve alterações individuais para aplicar 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 Common Language Runtime (CLR). 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 deve chamar IMetaDataEmit2::ResetENCLog para se preparar para a próxima sessão de edição. O depurador pode então continuar o processo.

Sempre que o depurador chamar ApplyChanges um módulo que tenha 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 para a 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á jogar fora essa cópia e obter uma nova cópia.

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

Requisitos

Plataformas: Consulte Requisitos do sistema.

Cabeçalho: CorDebug.idl, CorDebug.h

Biblioteca: CorGuids.lib

Versões do .NET Framework: Disponível desde 2.0