Udostępnij za pośrednictwem


ICorDebugModule2::ApplyChanges — Metoda

Stosuje zmiany w metadanych i zmiany w kodzie wspólnego języka pośredniego (CIL) do uruchomionego procesu.

Składnia

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

Parametry

cbMetadata [in] Rozmiar w bajtach metadanych różnicowych.

pbMetadata [in] Bufor zawierający metadane różnicowe. Adres buforu jest zwracany z metody IMetaDataEmit2::SaveDeltaToMemory .

Względne adresy wirtualne (RVA) w metadanych powinny być względem początku kodu CIL.

cbIL [in] Rozmiar w bajtach kodu CIL różnicowego.

pbIL [in] Bufor zawierający zaktualizowany kod CIL.

Uwagi

Parametr pbMetadata ma specjalny format metadanych różnicowych (jako dane wyjściowe IMetaDataEmit2 ::SaveDeltaToMemory). pbMetadata przyjmuje poprzednie metadane jako bazę i opisuje poszczególne zmiany, które mają być stosowane do tej bazy.

pbIL[Natomiast parametr ] zawiera nowy element CIL dla zaktualizowanej metody i ma całkowicie zastąpić poprzednią metodę CIL dla tej metody

Po utworzeniu funkcji CIL różnicowej i metadanych w pamięci debugera debuger wywołania ApplyChanges debugera w celu wysłania zmian do środowiska uruchomieniowego języka wspólnego (CLR). Środowisko uruchomieniowe aktualizuje tabele metadanych, umieszcza nowy element CIL w procesie i konfiguruje kompilację just in time (JIT) nowego CIL. Po zastosowaniu zmian debuger powinien wywołać metodę IMetaDataEmit2::ResetENCLog , aby przygotować się do następnej sesji edycji. Debuger może następnie kontynuować proces.

Za każdym razem, gdy debuger wywołuje ApplyChanges moduł zawierający metadane różnicowe, powinien również wywołać metodę IMetaDataEmit::ApplyEditAndContinue z tymi samymi metadanymi różnicowymi na wszystkich jego kopiach metadanych tego modułu z wyjątkiem kopii używanej do emitowania zmian. Jeśli kopia metadanych stanie się w jakiś sposób nieaktualna z rzeczywistymi metadanymi, debuger zawsze może wyrzucić kopię i uzyskać nową kopię.

ApplyChanges Jeśli metoda nie powiedzie się, sesja debugowania jest w nieprawidłowym stanie i musi zostać ponownie uruchomiona.

Wymagania

Platformy: zobacz Wymagania systemowe.

Nagłówek: CorDebug.idl, CorDebug.h

Biblioteka: CorGuids.lib

Wersje programu .NET Framework: dostępne od wersji 2.0