10. .NET 어셈블리
10.2 어셈블리 만들기
여기서는 .NET 어셈블리를 만들어 보기로 합시다. .NET 어셈블리 중에 실행 파일을 만드는 것은 이미 알고 있으므로 라이브러리를 만드는 것을 하겠습니다. 그리고 다중 파일 어셈블리의 부속이 되는 모듈도 만들어 보기로 합시다.
10.2.1 라이브러리 제작
.NET에서 라이브러리는 쉽게 제작할 수 있습니다. 코드를 작성하는 부분에서 다른 어셈블리에서 사용할 수 있는 형식을 정의할 때 public 키워드를 명시하기만 하면 됩니다. 멤버도 마찬가지로 다른 어셈블리에서 접근을 허용하게 하려면 접근 지정을 public으로 하면 됩니다.
즉, 다른 어셈블리에 정의된 형식이나 멤버 중에 사용할 수 있는 형식과 멤버는 접근 지정이 public으로 되어 있다는 것 말고는 차이가 없습니다. COM과 Win32API에서의 복잡하고 까다로운 표현을 접근 지정자로 간단하게 해결하였습니다.
public class Member
{
...중략...
public Member(string name, string addr)
{
...중략...
}
}
간단한 라이브러리를 하나 만들어 봅시다. 먼저 컴파일러 옵션을 이용하여 만드는 것을 보여 드리고 통합 개발 환경에서 만드는 것을 보여 드릴게요.
컴파일러 옵션을 이용하는 것을 보여 드리기 전에 메모장을 이용하여 소스 코드를 편집해 봅시다. 편집할 코드에는 다른 어셈블리에서 접근할 수 있는 Member 클래스와 접근할 수 없는 MemberInfo 클래스를 정의할게요.
그리고 Member에는 이름과 주소를 입력 인자로 받는 생성자와 이름 속성, 주소 속성의 get 블록을 public으로 접근 지정하여 다른 어셈블리에서 사용할 수 있게 합시다.
▶ 라이브러리 코드 예 (Member.cs)
namespace MemberLib { public class Member //다른 어셈블리에서 접근 가능 { MemberInfo mi = null;
public string Name //다른 어셈블리에서 접근 가능 { get { return mi.Name; } } public string Addr //다른 어셈블리에서 접근 가능 { get { return mi.Addr; } } public Member(string name, string addr) //다른 어셈블리에서 접근 가능 { mi = new MemberInfo(name, addr); } public override string ToString()//다른 어셈블리에서 접근 가능 { return mi.ToString(); } }
class MemberInfo //다른 어셈블리에서 접근 불가 { internal string Name { get; private set; } internal string Addr { get; private set; } internal MemberInfo(string name, string addr) { Name = name; Addr = addr; } public override string ToString() { return Name; } } } |
Visual Studio 명령 프롬프트에서 csc /t:library /out:MemberLib Member.cs를 입력하시면 컴파일되어 MemberLib.dll 파일명으로 .NET 어셈블리가 만들어집니다.
[그림 47] csc 명령어를 이용하여 .NET 어셈블리 만들기
다음은 콘솔 명령어 csc의 옵션들입니다.
▶기본 옵션
/out:<file> 만들어질 어셈블리 이름(출력 파일 이름)을 지정 /target:exe 콘솔 실행 파일을 만들기 (기본) (약식: /t:exe) /target:winexe Windows 실행 파일을 만들기 (약식: /t:winexe) /target:library 라이브러리를 만들기 (약식: /t:library) /target:module 모듈을 만들기 (약식: /t:module) /delaysign[+|] 어셈블리 서명을 연기 /doc:<file> XML 문서 파일 생성 /keyfile:<file> 강력한 이름의 키 파일을 지정 /keycontainer:<string> 강력한 이름의 키 컨테이너를 지정 /platform:<string> 실행할 수 있는 플랫폼을 지정 (x86, Itanium, x64,anycpu) |
▶ 자주 사용하는 옵션
/reference:<file list> 어셈블리 참조 (약식:/r) /addmodule:<file list> 모듈을 포함 /help csc 커맨드 사용법 (약식:/?) /lib:<file list> 참조를 검색할 추가 디렉터리를 지정 |
Microsof Visual Studio로 라이브러리를 만들 때는 다음과 같이 새 프로젝트 템플릿에서 클래스 라이브러리를 선택하여 만들면 됩니다.
[그림 48] Microsoft Visual Staio에서 클래스 라이브러리 만들기
너와 나의 연결고리 "공감"
'언어 자료구조 알고리즘 > Escort C#' 카테고리의 다른 글
[C#] 11. 예외 처리 - 예외처리 구문 (0) | 2016.05.16 |
---|---|
[C#] 10. .NET 어셈블리 - 모듈 작성 (0) | 2016.05.03 |
[C#] 10. .NET 어셈블리 - XML 문서 파일 (0) | 2016.05.03 |
[C#] 10. .NET 어셈블리 - 공용 어셈블리 (0) | 2016.05.03 |
[C#] 10. .NET 어셈블리 - 전용 어셈블리 (0) | 2016.05.03 |
[C#] 10. .NET 어셈블리 - .NET 어셈블리 구성 요소 (0) | 2016.05.03 |
[C#] 9. 대리자와 이벤트 - 이벤트 (0) | 2016.05.03 |
[C#] 9. 대리자와 이벤트 - 대리자 (0) | 2016.05.03 |
[C#] 8.2 컬렉션 - IComparable 인터페이스와 IComparer 인터페이스 (0) | 2016.05.03 |
[C#] 8.2 컬렉션 - IDictionary 인터페이스 (0) | 2016.05.03 |