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