다음을 통해 공유


방법: 어셈블리 내용 보기

업데이트: 2007년 11월

MSIL 디스어셈블러(Ildasm.exe)를 사용하면 파일에 있는 MSIL(Microsoft Intermediate Language) 정보를 볼 수 있습니다. 검사할 파일이 어셈블리인 경우, 이 정보에는 어셈블리 특성 이외에 다른 모듈 및 어셈블리의 참조가 포함될 수 있습니다. 이 정보는 파일이 어셈블리인지 아니면 어셈블리의 일부인지를 결정하거나 또는 다른 모듈 및 어셈블리의 참조가 파일에 포함되어 있는지를 결정하는 데 유용합니다.

Ildasm.exe를 사용하여 어셈블리의 내용을 표시하려면

  • 명령 프롬프트에서 ildasm <assembly name>을 입력합니다. 예를 들어, 다음 명령은 Hello.exe 어셈블리를 디스어셈블합니다.

    ildasm Hello.exe
    

어셈블리 매니페스트 정보를 보려면

  • MSIL 디스어셈블러 창에서 MANIFEST 아이콘을 두 번 클릭합니다.

예제

다음은 간단한 "Hello, World" 예제 프로그램을 보여 줍니다. 프로그램을 컴파일한 다음 Ildasm.exe를 사용하여 Hello.exe 어셈블리를 디스어셈블하고 어셈블리 매니페스트를 봅니다.

Imports System
Public Module modmain
   Sub Main()
      Console.WriteLine ("Hello World using Visual Basic!")
   End Sub
End Module 
using System;
class MainApp {
     public static void Main() {
        Console.WriteLine("Hello World using C#!"); 
    }
}
#using <mscorlib.dll>
using namespace System;
void main() {
   Console::WriteLine(L"Hello World using Managed Extensions!");  
}

Hello.exe 어셈블리에 대해 ildasm.exe 명령을 실행하고 IL DASM 창에서 MANIFEST 아이콘을 두 번 클릭하면 다음과 같이 출력됩니다.

.assembly extern mscorlib
{
  .publickeytoken = (B7 7A 5C 56 19 34 E0 89 )              // .z\V.4..
  .ver 1:0:2411:0
}
.assembly Hello
{
  // --- The following custom attribute is added automatically; do not uncomment. -------
  //  .custom instance void [mscorlib]System.Diagnostics.DebuggableAttribute::.ctor(bool,
  //                                                                                bool) = ( 01 00 00 01 00 00 ) 
  .hash algorithm 0x00008004
  .ver 0:0:0:0
}
.module Hello.exe
// MVID: {58AD9DFD-63A6-462A-8AD5-42CBC95AA147}
.subsystem 0x00000003
.file alignment 512
.corflags 0x00000001
// Image base: 0x03330000

다음 표는 예제에서 사용된 Hello.exe 어셈블리의 어셈블리 매니페스트에 있는 각 지시문에 대해 설명합니다.

지시문

설명

.assembly extern <assembly name>

현재 모듈에서 참조되는 항목을 포함하는 또 다른 어셈블리(이 예제에서 mscorlib)를 지정합니다.

.publickeytoken <token>

참조되는 어셈블리의 실제 키 토큰을 지정합니다.

.ver <version number>

참조되는 어셈블리의 버전 번호를 지정합니다.

.assembly <assembly name>

어셈블리 이름을 지정합니다.

.hash algorithm <int32 value>

사용되는 해시 알고리즘을 지정합니다.

.ver <version number>

어셈블리의 버전 번호를 지정합니다.

.module <file name>

어셈블리를 구성하는 모듈의 이름을 지정합니다. 이 예제에서는 어셈블리가 하나의 파일로 구성됩니다.

.subsystem <value>

프로그램에 필요한 응용 프로그램 환경을 지정합니다. 이 예제에서 값 3은 이 실행 파일이 콘솔에서 실행됨을 나타냅니다.

.corflags

메타데이터에서 현재 예약된 파일입니다.

어셈블리 매니페스트에는 어셈블리 콘텐츠에 따라 여러 가지 다른 지시문이 포함될 수 있습니다. 어셈블리 매니페스트의 전체 지시문 목록은 ECMA 설명서, 특히 "Partition II: Metadata Definition and Semantics" 및 "Partition III: CIL Instruction Set"를 참조하십시오. 이 설명서는 https://msdn.microsoft.com/net/ecma/http://www.ecma-international.org/publications/standards/ecma-335.htm에서 볼 수 있습니다.

참고 항목

개념

응용 프로그램 도메인과 어셈블리

응용 프로그램 도메인 및 어셈블리 방법 항목

참조

MSIL 디스어셈블러(Ildasm.exe)