Bagikan melalui


Cara: Melihat Konten rakitan

Anda dapat menggunakan Ildasm.exe (Il Disassembler) untuk melihat informasi bahasa perantara umum (CIL) dalam file. Jika file yang diperiksa adalah rakitan, informasi ini dapat menyertakan atribut rakitan dan mereferensi 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 ildasm <nama rakitan> pada 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 perakitan Hello.exe dan melihat manifes perakitan.

using namespace System;

class MainApp
{
public:
    static void Main()
    {
        Console::WriteLine("Hello World using C++/CLI!");
    }
};

int main()
{
    MainApp::Main();
}
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 ini menjelaskan setiap direktif dalam manifes perakitan untuk rakitan Hello.exe yang digunakan dalam contoh:

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

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

Lihat juga