5장 - 3

2014. 11. 24. 23:41IT Books/시작하세요 C# 프로그래밍

버전 관리


닷넷에서는 

1. 전역 어셈블리 캐시 (Global Assembly Cache) - GAC

2. 강력한 이름의 어셈블리 (string-named assembly0

 두 가지를 가지고 버전관리를 한다.


MS에서 제공하는 개인키 생성용 파일인 sn.exe를 개발자 명령프롬프트에서 실행

sn -k temp.snk

하면 temp.snk라는 개인키가 담긴 파일을 생성한다.

이 파일을 이용하여 공개키 토큰값을 어셈블리 파일명에 부여할 수 있다.


이 공개키 토큰이 적용된 어셈블리를 [강력한 이름의 어셈블리] 라고 지칭한다.


*

서명



**

닷넷 프레임워크가 설치되면 C:\Windows\assembly라는 폴더가 생성되고 전역 어셈블리 캐시(GAC)라고 부르는 전용 어셈블리 저장소로 사용된다. 오직 [강력한 이름의 어셈블리]만이 이 저장소에 들어갈 수 있다.


우리가 만든 서명된 dll을 GAC에 등록하려면 gacutil.exe를 사용.


1. Developer Command Prompt For VS2012 를 관리자 권한으로 실행

2. gacutil /i 어셈블리이름.dll  등록

3. gacutil /u 어셈블리이름 해제


** 등록시에는 확장자까지 붙여야 하고 해제시에는 확장자없이 파일명만 지정.





GAC 폴더에 등록된 모습



버전을 바꿔서 등록하면 위와 같이 자동으로 변경된 버전용 폴더가 생긴다.



로딩 우선순위?

이렇게 GAC에 등록된 어셈블리를 전역 어셈블리(Global Assembly)라고 한다.

전용 어셈블리와 같이 exe와 동일한 폴더에 있지 않아도 동작한다.

CLR은 exe 파일과 같은 폴더에 동일한 이름의 전용 어셈블리가 있을지라도 

전역 어셈블리로 등록된 [강력한 이름의 어셈블리]를 우선적으로 로딩한다.


그럼 배포는?

1. exe와 같은 폴더에 복사하여 배포

2. GAC에 등록하고 나머지는 다른 폴더에.


2번의 방법보다는 1번으로 쓰는게 대부분인데 이유는?

어플리케이션을 사용하는 사람의 컴퓨터 안의 GAC에 dll을 등록하는 공식적인 방법은 MSI (Microsoft Installer) 밖에 없다.

'IT Books > 시작하세요 C# 프로그래밍' 카테고리의 다른 글

5장 - 5  (0) 2014.12.02
5장 - 4  (0) 2014.11.27
5장 - 2  (0) 2014.11.23
5장 - 1  (0) 2014.11.21
4장 - 3  (0) 2014.11.20