Cara Melihat Konten Assembly

Anda dapat menggunakan Ildasm.exe (Il Disassembler) untuk melihat informasi bahasa perantara umum (CIL) dalam file. Jika file yang diperiksa adalah assembly, informasi ini dapat menyertakan atribut assembly dan referensi ke modul dan rakitan lain. Informasi ini dapat membantu dalam menentukan apakah file adalah rakitan atau bagian dari rakitan dan apakah file memiliki referensi ke modul atau rakitan lain.

Untuk menampilkan konten rakitan menggunakan Ildasm.exe, masukkan nama< rakitan ildasm > pada prompt perintah. Misalnya, perintah berikut membongkar rakitan Hello.exe .

ildasm Hello.exe

Untuk melihat informasi manifes perakitan, klik dua kali ikon Manifes di jendela Il Disassembler.

Contoh

Contoh berikut dimulai dengan program dasar "Halo Dunia". Setelah mengkompilasi program, gunakan Ildasm.exe untuk membongkar rakitan Hello.exe dan melihat manifes perakitan.

using System;

class MainApp
{
    public static void Main()
    {
        Console.WriteLine("Hello World using C#!");
    }
}
Class MainApp
    Public Shared Sub Main()
        Console.WriteLine("Hello World using Visual Basic!")
    End Sub
End Class

Menjalankan perintah ildasm.exe pada rakitan Hello.exe dan mengklik dua kali ikon Manifes di jendela Il Disassembler menghasilkan output berikut:

// Metadata version: v4.0.30319
.assembly extern mscorlib
{
  .publickeytoken = (B7 7A 5C 56 19 34 E0 89 )                         // .z\V.4..
  .ver 4:0:0:0
}
.assembly Hello
{
  .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilationRelaxationsAttribute::.ctor(int32) = ( 01 00 08 00 00 00 00 00 )
  .custom instance void [mscorlib]System.Runtime.CompilerServices.RuntimeCompatibilityAttribute::.ctor() = ( 01 00 01 00 54 02 16 57 72 61 70 4E 6F 6E 45 78   // ....T..WrapNonEx
                                                                                                             63 65 70 74 69 6F 6E 54 68 72 6F 77 73 01 )       // ceptionThrows.
  .hash algorithm 0x00008004
  .ver 0:0:0:0
}
.module Hello.exe
// MVID: {7C2770DB-1594-438D-BAE5-98764C39CCCA}
.imagebase 0x00400000
.file alignment 0x00000200
.stackreserve 0x00100000
.subsystem 0x0003       // WINDOWS_CUI
.corflags 0x00000001    //  ILONLY
// Image base: 0x00600000

Tabel berikut menjelaskan setiap arahan dalam manifes perakitan perakitan Hello.exe yang digunakan dalam contoh:

Direktif Deskripsi
.assembly nama rakitan extern <> Menentukan rakitan lain yang berisi item yang dirujuk oleh modul saat ini (dalam contoh ini, mscorlib).
Token .publickeytoken <> Menentukan token kunci aktual dari rakitan yang dirujuk.
Nomor versi .ver <> Menentukan nomor versi rakitan yang dirujuk.
Nama rakitan .assembly <> Menentukan nama rakitan.
Algoritma .hash <int32 value> Menentukan algoritma hash yang digunakan.
Nomor versi .ver <> Menentukan nomor versi rakitan.
Nama file .module <> Menentukan nama modul yang membentuk rakitan. Dalam contoh ini, kompilasi hanya terdiri dari satu berkas.
.subsistem <nilai> Menentukan lingkungan aplikasi yang diperlukan untuk program. Dalam contoh ini, nilai 3 menunjukkan bahwa executable ini dijalankan dari konsol.
.corflags Saat ini adalah bidang cadangan dalam metadata.

Manifes perakitan dapat berisi sejumlah arahan yang berbeda, tergantung pada konten rakitan. Untuk daftar ekstensif arahan dalam manifes perakitan, lihat dokumentasi Ecma, terutama "Partisi II: Definisi Metadata dan Semantik" dan "Partisi III: Set Instruksi CIL":

Lihat juga