-
다중 파일 어셈블리
-
myAseembly.dll에 포함된 세 개 파일 모두 하나의 어셈블리에 속함
-
하지만 파일 시스템에서는 이들 파일을 세 개의 개별 파일로 인식
-
Util.netmodule 파일은 아무러 어셈블리 정보를 포함하지 않기 때문에 모듈로 커파일
-
어셈블리가 만들어질 때 MyAssembly.dll과 Util.dll및 Graphic.bmp와의 관계를 나타내도록 어셈블리 매니페스트가 MyAssembly.dll에 추가된다.
-
코드 디자인시 단일 파일 어셈블리로 구성할 지, 다중 파일 어셈블리로 구성할 지, 다중 파일 어셈블리로 구성한다면 어떻게 구조화할 것인지를 결정해야함.
-
-
namespace와 assembly
-
namespace : data type들을 그룹화하는 논리적 개념
-
하나의 네임스페이스는 여러 개의 어셈블리로 구성되어 질 수 있고,
-
하나의 어셈블리는 여러 개의 네임스페이스로 구성되어질 수 있다.
-
-
-
다중 파일 어셈블리 만들기
-
다른 언어로 작성된 모듈을 결합하려는 이유로 사용
-
자주 사용되지 않는 data type에 대해 필요할 때만 다운로드 되도록 모듈로 분리하고자 할 때 사용
-
Enterprise 환경에서 개발시 여러 개발자가 각각의 모듈로 생성하고, 이를 하나의 어셈블리로 통합
-
생성 방법
-
1단계 : 어셈블리를 구성하는 부속 파일에 대한 모듈 생성
-
2단계 : 다른 모듈에 대한 참조를 사용하여 주 모듈 컴파일
-
/addmodule : 옵션을 사용하여 1단계에서 생성한 부속모듈에 대한 reference 추가
-
-
3단계 : 어셈블리 링커를 사용하여 다중 파일 어셈블리 만들기
-
-
1단계 : 어셈블리를 구성하는 부속파일에 대한 모듈 생성
-
csc /t:module MyCode.cs // MyCode.netmodule 이라는 모듈 생성 csd /out:util.netmodule /t:module MyCode.cs // 모듈명 지정하여 생성 |
-
2단계 : 부속 모듈에 대한 참조를 사용하여 주 모듈 컴파일
csc /addmodule:util.netmodule /t:module Client.cs // Client.netmodule을 생성하면서 util.netmodule에 대한 reference 추가 |
-
위 두 과정을 하나의 명령문으로 처리 가능
csc /out:Client.exe Client.cs /out:util.netmodule MyCode.cs |
-
3단계 : 어셈블리 링커를 사용하여 다중 파일 어셈블리 만들기
-
al<moudle name> <module name>...
-
/out:<file name>
-
/main:<method name>
-
/target:<assembly file type>
-
al Client.netmodule util.netmodule /main:MainClientApp.Main /out:MyAssembly.exe /target:exe |
-
어셈블리 링커
-
Assembly Linker는 모듈 또는 리소스 파일인 하나 이상의 파일에서 어셈블리 매니페스트가 있는 파일을 생성
-
/out : 필수옵션으로 AL이 만드는 파일의 이름을 지정
-
/embed : 모듈이 지정하는 리소스를 어셈블리 매니페스트가 포함된 이미지에 포함시킨다.
-
/link : 리소스 파일을 어셈블리에 링크
-
/main : 모듈을 실행 파일로 변환할 때, 실행 파일의 진입점에 해당하는 method
-
/target : 출력 파일의 파일 형식을 lib(코드 라이브러리), exe(콘솔 응용 프로그램) 또는 win(Windows 기반 응용 프로그램)으로 지정, default는 lib
-
-
[첨부 파일 : 소스 파일]
출처 : (주)인터데브 솔루션 개발 사업부 박준호님의 동영상 강좌
'프로그램&DB > C#' 카테고리의 다른 글
[C# 강좌] 라면 만들기 강좌 전편 - 데브피아 C# 마을 유경문 (lazykoder) (0) | 2009.04.20 |
---|---|
[C# 기사풀이] 라면 만들기 강좌 후편 - 데브피아 C#마을 유경문 (lazykoder)씨의 글 (0) | 2009.04.20 |
박준호님의 C# 강좌 - Assembly1 (단일 파일 Assembly) (0) | 2009.04.14 |
박준호님의 C# 강좌 - Preprocessor Directive(전처리기 지시문) (0) | 2009.04.14 |
박준호님의 C# 강좌 - C# 객체 소멸과 Garbage Collection (0) | 2009.04.14 |