CLR과 어셈블리

C#/CLR via 2020. 2. 16. 17:21
반응형

어셈블리 제작 – AL.exe CSC.exe
CUI, GUI, Window Store App PE
파일 들을 만들어 낼 수 있음 매우 드문일
적당히 IL 코드를 포함하는 EXE PE 파일을 만드는 것 - 더 보편적

위성 어셈블리(Satelite Assembly) – 어셈블리에 문화권 정보만 설정되어 있는 형태

어셈블리 종류

어셈블리 종류

개별적으로 배포 가능 여부

전역으로 배포 가능 여부

약한 이름의 어셈블리

O

X

강한 이름의 어셈블리

O

O

개별적으로 배포되는 어셈블리 응용프로그램의 기본 디렉터리나 그 아래의 디렉터리에 배포되는 것

전역으로 배포 가능 잘 알려진 위치에 배포되어 CLR이 어셈블리를 쉽게 찾을 수 있도록 해준다.

 

강한 이름의 어셈블리

1.     전역으로 배포를 할 경우 여러 개의 어셈블리들이 잘 알려진 위치에 같이 복사

2.     뒤에 어셈블리가 앞에 어셈블리를 덮어쓰는 일이 생긴다.

3.     이전 버전 어셈블리를 참조하던 모든 응용프로그램들이 사용하던 함수를 잃어버린다.

4.     결론. 파일 이름을 이용해서 어셈블리를 구분하는 것은 충분치 않다.

5.     CLR은 어셈블리를 고유하게 식별할 수 있는 새로운 매커니즘을 필요
->
강력한 이름의 어셈블리

 

강력한 이름의 어셈블리 구분 특성

MyTypes, Version=1.0.8123.0, Culture=neutral, PublicKeyToken=b77a5c561934e089

확장명 없는 이름 버전정보   문화권 정보  공개 키 토큰

+공개 키 토큰(Public Key Token) – 원 공개 키 값은 매우 큰 숫자로, 공개 키로 얻어진 작은 해시값을 주로 사용, 사용자는 어디서 배포한 것인지 확실하게 구별될 수 있도록 하기 원한다면 게시자만의 고유한 공개/비밀 키 쌍을 만들어두어야 한다.

 

약한 이름의 어셈블리

1.     CLR은 버전 정보 무시

2.     문화권에 대한 정보를 검색할 때만 위성 어셈블리를 찾아볼 목적으로 하위 디렉터리들 검색

3.     항상 개별적으로 배포

4.     확장명을 제외한 어셈블리의 이름만을 이용해 로드

찾는 디렉터리 종류

l  기본 디렉터리

l  그 아래에 있는 자동 검색 기준상의 디렉터리 or XML

환경 설정 파일에 있는 privatePath XML 속성의 설정에 지정된 하위 디렉터리

반응형

'C# > CLR via' 카테고리의 다른 글

매개변수 & 프로퍼티  (0) 2020.02.21
메서드  (0) 2020.02.19
참조 타입과 값 타입  (0) 2020.02.18
Object 그리고 캐스팅  (0) 2020.02.16
CLR(Common Language RunTime) "공용 런타임"이란  (0) 2020.02.07
Posted by Lotus' Library
,