Bagikan melalui


Metode ICorDebugModule2::ApplyChanges

Menerapkan perubahan dalam metadata dan perubahan dalam kode bahasa perantara umum (CIL) ke proses yang sedang berjalan.

Syntax

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

Parameter-parameternya

cbMetadata [di] Ukuran, dalam byte, metadata delta.

pbMetadata [di] Buffer yang berisi metadata delta. Alamat buffer dikembalikan dari metode IMetaDataEmit2::SaveDeltaToMemory .

Alamat virtual relatif (RVA) dalam metadata harus relatif terhadap awal kode CIL.

cbIL [di] Ukuran, dalam byte, dari kode CIL delta.

pbIL [di] Buffer yang berisi kode CIL yang diperbarui.

Komentar

Parameter pbMetadata dalam format metadata delta khusus (sebagai output oleh IMetaDataEmit2::SaveDeltaToMemory). pbMetadata mengambil metadata sebelumnya sebagai dasar dan menjelaskan perubahan individual untuk diterapkan ke basis tersebut.

Sebaliknya, pbIL[parameter ] berisi CIL baru untuk metode yang diperbarui, dan dimaksudkan untuk sepenuhnya menggantikan CIL sebelumnya untuk metode tersebut

Ketika delta CIL dan metadata telah dibuat dalam memori debugger, debugger memanggil ApplyChanges untuk mengirim perubahan ke dalam runtime bahasa umum (CLR). Runtime memperbarui tabel metadatanya, menempatkan CIL baru ke dalam proses, dan menyiapkan kompilasi just-in-time (JIT) dari CIL baru. Ketika perubahan telah diterapkan, debugger harus memanggil IMetaDataEmit2::ResetENCLog untuk mempersiapkan sesi pengeditan berikutnya. Debugger kemudian dapat melanjutkan proses.

Setiap kali debugger memanggil ApplyChanges modul yang memiliki metadata delta, debugger juga harus memanggil IMetaDataEmit::ApplyEditAndContinue dengan metadata delta yang sama pada semua salinan metadata modul tersebut kecuali untuk salinan yang digunakan untuk memancarkan perubahan. Jika salinan metadata entah bagaimana menjadi tidak sinkron dengan metadata aktual, debugger selalu dapat membuang salinan tersebut dan mendapatkan salinan baru.

ApplyChanges Jika metode gagal, sesi debug dalam status tidak valid dan harus dimulai ulang.

Persyaratan

Platform: Lihat Sistem operasi yang didukung .NET.

Header: CorDebug.idl, CorDebug.h

Perpustakaan: CorGuids.lib

Versi .NET: Tersedia sejak .NET Framework 2.0