1.5.2 .NET 어셈블리 만들기

여기서는 .NET 어셈블리를 만들어 보기로 합시다. .NET 어셈블리 중에 실행 파일을 만드는 것은 이미 알고 있으므로 라이브러리를 만드는 것을 하겠습니다.

.NET에서 라이브러리는 쉽게 제작할 수 있습니다. 코드를 작성하는 부분에서 다른 어셈블리에서 사용할 수 있는 형식을 정의할 때 public 키워드를 명시합니다. 멤버도 마찬가지로 다른 어셈블리에서 접근을 허용하게 하려면 접근 지정을 public으로 설정합니다.

즉 다른 어셈블리에 정의된 형식이나 멤버 중에 사용할 수 있는 형식과 멤버는 접근 지정이 public으로 되어 있다는 것 말고는 차이가 없습니다.

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 어셈블리가 만들어집니다.

csc 명령어를 이용하여 .NET 어셈블리 만들기
[그림 1.3] 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로 라이브러리를 만들 때는 다음과 같이 새 프로젝트 템플릿에서 클래스 라이브러리를 선택하여 만들면 됩니다.

Microsoft Visual Staio에서 클래스 라이브러리 만들기
[그림 1.4] Microsoft Visual Staio에서 클래스 라이브러리 만들기