어셈블리

less than 1 minute read

어셈블리

assembly

C#에서 프로그램을 만드는 경우 보통 EXE 또는 DLL 파일을 만들게 되는데 이런 실행 파일을 어셈블리라고 한다.

기계어와 1:1 대응되는 프로그래밍 언어를 뜻하는 어셈블리와는 개별적인 단어이다. 닷넷 프로그래밍에서는 별다른 언급이 없다면 어셈블리는 실행 파일(EXE, DLL)을 의미한다.


모듈, 매니페스트

module

어셈블리는 1개 이상의 모듈로 구성하고 어셈블리는 하나당 한 개의 파일과 대응된다. 따라서 어셈블리가 여러개의 모듈을 가지고 있을 경우 긱 모듈마다 대응되는 파일들을 관리할 수 있는 데이터가 필요하다.


manifest

매니페스트는 다른 모듈의 목록을 관리하는 데이터이다.

assembly


매니페스트를 포함하고 있지 않은 모듈은 보통 확장자가 netmodule이고 매니페스트를 포함하는 경우에는 확장자가 DLL, EXE이다.

즉 어셈블리는 그 자체가 참조 단위이자 배포 단위라는 것에 의미가 있고 다른 사람이 만든 코드를 사용하기 위해서는 매니페스트가 포함된 모듈 및 그와 관련된 모든 모듈을 함께 가지고 있어야한다.

이론적으로는 어셈블리가 다수의 모듈을 지원하는 형태지만 일반적으로는 여러 개의 모듈을 관리하는 것이 번거롭기 때문에 어셈블리가 하나의 모듈로 구성된다.