12. [C#,닷넷강좌]닷넷어셈블리, C#.NET assembly, 예제작성. C#/WPF/닷넷WPF/ASP.NET/ADO닷넷/닷넷교육/닷넷강좌학원/닷넷공부/닷넷책/닷넷객체지향교육
닷넷 어셈블리 작성 실습
C#으로 간단히 클래스 라이브러리를 만들어 보기로 하자.
C:\dotnet\project에 ClassLibrary Project생성 (이름을 Shapes라고 하고 Class1.cs 파일명을
Shapes.cs로 바꾸자 .)
[Shapes.cs]
using System;
namespace Shapes
{
public class
Circle
{
double
radius;
public
Circle()
{
radius =
0;
}
public
Circle(double radius)
{
this.radius =
radius;
}
public double
Area()
{
return
System.Math.PI * (radius * radius);
}
}
public class
Triangle
{
double
Base;
double
Height;
public
Triangle()
{
Base = 0;
Height =
0;
}
public
Triangle(double Base, double Height)
{
this.Base =
Base;
this.Height =
Height;
}
public double
Area()
{
return 0.5F *
Base * Height;
}
}
}
빌드 솔루션 빌드를 선택하여 Shapes Project를 빌드 하자. 만약 명령 행 이라면 아래와 같이 컴파일 하자.
csc /target:library shapes.cs
shapes.dll 이 생겼을 것이다..
어셈블리의 내용 보기
방금 만든 shapes.dll의 내용을 보기로 하자. 이것이 가능 한 것도 이전에 이야기 했던 어셈블리의 자기 서술적 특징 때문이다.
어셈블리의 내용을 보기 위해 사용 할 도구는 .NET framework Intemidiate Language DisAssembler 줄여서
ildasm 으로 어셈블리의 내부 구조를 보는데 유익하다.
우선 ildasm을 VS의 외부 도구에 추가해 보기로 하자. 도구 외부도구를 선택하고 [추가] 버튼을 선택 한 후 [제목]에
ildasm을 입력 하고 [명령] 상자의 오른쪽에 있는 (…)버튼을 클릭 후 C:\Program Files\Microsoft
SDKs\Windows\v7.0A\bin의 ildasm 파일을 선택하고 [열기]를 클릭 한 후 [확인]을 클릭 하면 등록이 완료
된다.
Ildasm이 추가 되었으면 도구(Tools) ildasm을 선택 후 File Open을 이용하여
C:\dotnet\project\Shapes\Shapes\bin\Debug\shapes.dll을 선택.
<그림 ILDASM 화면>
ildasm의 메인 창에 어셈블리의 내용이 나타나는데 매니페스트와 Shape Class가 보이며 Shapes의 방패 아이콘은
네임스페이스를 의미하고 +표시를 클릭하여 확장하면 Circle, Triangle 클래스가 나타난다.
매니페스트
매니페스트는 어셈블리 안의 각 파일 또는 모듈을 서술한다. 특히 매니페스트는 이 어셈블리가 참조하는 외부 어셈블리도 기술한다.
프로그램이 System.Data.dll을 사용 한다면 그 사실이 매니페스트에도 반영이 되는 것 이다. 또한 버전 번호도 유지하므로 프로그램을 새
버전으로 업그레이드 하는데도 작업이 쉬워진다. Shapes.dll의 목록에서 MANIFEST를 더블 클릭하면 아래와 같은 창이 나타날
겁니다.
<그림 MANIFEST 화면>
shapes.dll의 MANIFEST에는 두개의 .assembly 지시자 들과 하나의 .module 지시자가 있다.
.assembly extern mscorlib : 이것은 mscorlib.dll에 대한 외부 어셈블리 참조이며
mscorlib.dll은 .NET framework의 거의 모든 기반 System 클래스를 정의한다.
.assembly Shapes 블록은 shapes 어셈블리 자체에 대한 선언이다.
.module의 경우 shapes.dll은 하나의 파일만 가지므로 이처럼 하나의 .module 선언만 존재한다.
이번에는 원본 파일을 수정하여 MANIFEST 내용을 확인 해 보자.
using System.Drawing; 문을 추가하고 Circle의 Area() 메소드 다음에 다음을 추가 하자.
public void Draw()
Pen p = new
Pen(Color.Red);
}
이 소스를 컴파일 할 때 System.Drawing Namespace가 없다고 할 것 이므로 프로젝트에서 참조추가를 선택 해서
System.Drawing.dll을 추가하자.
수정된 파일을 다시 빌드(F6) 후 ildasm을 실행 시키면 System.Drawing에 대한 외부 어셈블리 참조가 추가 되었음을 알
수 있다. 매니페스트(MANIFEST)도 확인하자.
댓글 없음:
댓글 쓰기