달력

02

« 2012/02 »

  •  
  •  
  •  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  •  
  •  
  •  
2007/12/17 10:25

닷넷 전용 어셈블리 General .NET2007/12/17 10:25

어셈블리 전용(Private) 또는 공유(Shared) 형태로 배포됨.

l         전용과 공유의 차이점 명명 규칙과 버전관리 정책

 

l         전용 어셈블리의 특징

n         배포된 응용 프로그램에 의해서만 이용될 수 있는 모듈들의 집합.

n         해당 형식들을 소유하는응용 프로그램만이 이 형식들을 사용할 수 있고 시스템의 다른 응용 프로그램과 공유하지 않게 한다는 것을 의미.

n         클라이언트 응용 프로그램과 동일한 디렉토리(응용 프로그램 디렉토리)나 그 하위 디렉토리에 있어야 함.

n         전용 어셈블리의 resolution과 로딩은 어셈블리가 위치한 응용 프로그램 디렉토리(bin 디렉토리)에서 일어난다. 옮겨도 실행됨.

n         삭제를 하여도 머신의 다른 응용 프로그램에는 손상을 주지 않음.

 

l         전용 어셈블리 프로빙(기초)

n         프로빙 외부 어셈블리 참조자를 정확히 상응하는 바이너리 파일에 매핑하는 과정

n         프로빙이란?

u        닷넷 런타임이 어떤 모듈의 매니페스트로부터 .assembly extern CarLibrary 라는 라인을 읽게 되면 CarLibrary.dll이라는 이름의 파일을 검색한다. 이 때 이 파일을 검색할 수 없게 된다면 *.exe 버전을 검색하게 된다. 이 두 파일이 모두 검색되지 않으면 런타임 예외를 발생시킨다. 그러나 XML 구성 파일(*.config)을 이용하게 되면 런타임이 응용 프로그램 디렉토리 밖의 다른 위치에 에서 프로브하게 할 수 있다.

 

l         전용 어셈블리 식별하기

n         전용 어셈블리 식별자 문자열 이름과 숫자 버전으로 구성.

n         문자열 이름 어셈블리의 매니페스트를 포함하는 바이너리 모듈의 이름에 기초해서 만들어진다.

Ex) CarLibrary.dll 어셈블리의 매니페스트

.assembly CarLibrary

{

….

.ver 1:0:454:30104 ß--- 버전 번호는 다를 수 있다.

}

어셈블리의 버전 정책은 닷넷 런타임이 어셈블리를 로딩할 때 적용하려 하지 않을 것이다. 그 이유는 이 전용 어셈블리를 알고 있는 것은 바로 해당 클라이언트 응용 프로그램밖에 없기 때문이다. 그렇기 때문에 전용 어셈블리에 대해서는 정확한 버전 검사를 할 필요가 없는 것이다.

 

 

Reference

1. Part3 .NET 어셈블리를 이용한 프로그래밍, 9장 .NET 어셈블리, C# and the .NET Platform, p.440~442

'General .NET' 카테고리의 다른 글

DataTable.NewRow  (0) 2007/12/17
int.Parse(int value)와 Convert.ToInt(object value)와의 차이점  (0) 2007/12/17
닷넷 전용 어셈블리  (0) 2007/12/17
델리게이트  (0) 2007/12/17
제너릭  (0) 2007/12/17
C# '전처리기' 지시문  (0) 2007/12/17
Posted by -세티-