Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Applica le modifiche nei metadati e le modifiche nel codice CIL (Common Intermediate Language) al processo in esecuzione.
Sintassi
HRESULT ApplyChanges (
[in] ULONG cbMetadata,
[in, size_is(cbMetadata)] BYTE pbMetadata[],
[in] ULONG cbIL,
[in, size_is(cbIL)] BYTE pbIL[]
);
Parametri
cbMetadata [in] Dimensioni, in byte, dei metadati differenziali.
pbMetadata [in] Buffer contenente i metadati differenziali. L'indirizzo del buffer viene restituito dal metodo IMetaDataEmit2::SaveDeltaToMemory .
Gli indirizzi virtuali relativi nei metadati devono essere relativi all'inizio del codice CIL.
cbIL [in] Dimensioni, in byte, del codice CIL differenziale.
pbIL [in] Buffer contenente il codice CIL aggiornato.
Osservazioni:
Il pbMetadata parametro è in un formato di metadati delta speciale (come output di IMetaDataEmit2::SaveDeltaToMemory).
pbMetadata accetta i metadati precedenti come base e descrive le singole modifiche da applicare a tale base.
Al contrario, il pbIL[parametro ] contiene il nuovo CIL per il metodo aggiornato ed è destinato a sostituire completamente l'CIL precedente per tale metodo
Quando l'CIL differenziale e i metadati sono stati creati nella memoria del debugger, il debugger chiama ApplyChanges per inviare le modifiche in Common Language Runtime (CLR). Il runtime aggiorna le tabelle di metadati, inserisce il nuovo CIL nel processo e configura una compilazione JIT (Just-In-Time) del nuovo CIL. Dopo l'applicazione delle modifiche, il debugger deve chiamare IMetaDataEmit2::ResetENCLog per prepararsi alla sessione di modifica successiva. Il debugger può quindi continuare il processo.
Ogni volta che il debugger chiama ApplyChanges su un modulo con metadati differenziali, deve anche chiamare IMetaDataEmit::ApplyEditAndContinue con gli stessi metadati differenziali in tutte le copie dei metadati del modulo, ad eccezione della copia usata per generare le modifiche. Se una copia dei metadati diventa in qualche modo non sincronizzata con i metadati effettivi, il debugger può sempre gettare via tale copia e ottenere una nuova copia.
Se il ApplyChanges metodo ha esito negativo, la sessione di debug è in uno stato non valido e deve essere riavviata.
Requisiti
Piattaforme: Vedere Sistemi operativi supportati da .NET.
Intestazione: CorDebug.idl, CorDebug.h
Biblioteca: CorGuids.lib
Versioni di .NET: Disponibile a partire da .NET Framework 2.0