일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 30 |
- 아름다운 자연폭포
- c#
- Wiki
- Never
- 장관을 이루는 세계 곳곳의 등대 사진
- 전 세계의 잊지 못할 명소들
- 이탈리아
- 8장
- 물이 만들어내는 전 세계의 아름다운 장관
- 6장
- CLR via C#
- 무료
- 위젯
- 4장
- ML
- 오늘일기
- Enough
- 사진: 세계의 웅대한 산
- 3장
- 남아프리카
- 5장
- 동물에 관한 매혹적인 사실
- 그루지야
- 제프리 리처
- 아름다운 풍경
- Death
- Coursera
- 장관을 이루는 일몰과 일출
- Fear
- andrew ng
- Today
- Total
목록3장 (8)
오진이 블로그
목차1부. CLR의 기본3장. 공유 어셈블리와 강력한 이름의 어셈블리실행 중에 타입에 대한 참조를 어떻게 찾아내는가1부. CLR의 기본3장. 공유 어셈블리와 강력한 이름의 어셈블리실행 중에 타입에 대한 참조를 어떻게 찾아내는가참조된 타입을 찾아낼 때 CLR은 다음 세 위치 중 한 곳에서 타입을 찾아내게 된다.같은 파일: 같은 파일 안에 들어있는 타입에 대한 엑세스는 컴파일 시점에 파악이 완료되며 이를 "초기 바인딩"(Early Bound)이라고 이야기하기도 한다. 파일에서 직접 타입을 로드하며, 실행을 계속한다.다른 파일, 같은 어셈블리: 실행 시점에서 찾는 타입이 어셈블리의 대표 매니페스트상의 ModuleRef 테이블에 서술된 파일 안에 찾는 내용이 들어있을 것이라는 전제에서 출발한다. CLR은 어셈블..
목차1부. CLR의 기본3장. 공유 어셈블리와 강력한 이름의 어셈블리강력한 이름의 어셈블리를 개별적으로 배포하기1부. CLR의 기본3장. 공유 어셈블리와 강력한 이름의 어셈블리강력한 이름의 어셈블리를 개별적으로 배포하기어셈블리를 GAC에 설치하면 몇 가지 장점이 있다. GAC를 이용하면 수많은 응용프로그램들이 어셈블리를 공유할 수 있으면서도, 전반적인 메모리 사용량을 크게 감소시킬 수 있다. 더 나아가서 새로운 버전의 어셈블리를 배포하는 일이 단순해지며 이 장 후반에서 설명할 게시자 정책(Publisher Policy)을 이용하여 모든 응용프로그램들이 새 버전의 어셈블리를 사용하도록 할 수 있다. 그리고 어셈블리의 버전별로 Side-by-Side 관리를 지원한다. 하지만 GAC는 관리자 권한 없이 어셈블..
목차1부. CLR의 기본3장. 공유 어셈블리와 강력한 이름의 어셈블리서명 연기1부. CLR의 기본3장. 공유 어셈블리와 강력한 이름의 어셈블리서명 연기서명 연기를 이용하면 조직에서 사용하는 공개 키만을 이용하여 어셈블리를 만들 수 있도록 해주고 비밀 키는 요구하지 않는다.서명 연기를 이용한 어셈블리의 개발 과정 요약 정리어셈블리를 개발하는 도중에는 조직의 공개 키만을 포함하는 파일을 얻어 /keyfile과 /delaysign 컴파일러 스위치와 함께 해당 파일을 인자로 지정하여 어셈블리를 컴파일해야 한다. csc /keyfile:MyCompany.PublicKey /delaysign MyAssembly.cs어셈블리를 만들고 난 다음, 다음의 명령 줄을 실행하여 CLR이 해시와 내용 검증을 하지 않고 만들어..
목차1부. CLR의 기본3장. 공유 어셈블리와 강력한 이름의 어셈블리강력한 이름의 어셈블리로 조작을 방지하기1부. CLR의 기본3장. 공유 어셈블리와 강력한 이름의 어셈블리강력한 이름의 어셈블리로 조작을 방지하기비밀 키를 이용하여 어셈블리를 서명하고 어셈블리 안에 공개 키와 서명을 추가하여 CLR이 어셈블리가 최초로 만들어진 이후로 훼손되거나 수정되지 않았음을 판별할 수 있다.어셈블리가 GAC에 설치될 때, 시스템은 매니페스트를 포함하는 파일의 내용을 해시 값으로 계산하여 PE 파일 안에 들어있는 RSA 디지털 서명 값(나중에 공개 키로 역서명(Unsigning)을 해보게 될 값이기도 하다)의 해시 값을 비교해본다.만약 같은 값으로 계산되면, 파일의 내용이 외부에서 훼손되지 않았음을 확인할 수 있다.응용..
목차1부. CLR의 기본3장. 공유 어셈블리와 강력한 이름의 어셈블리1부. CLR의 기본3장. 공유 어셈블리와 강력한 이름의 어셈블리파일 이름이 전체 경로로 지정되어 있다면, CSC.EXE에서는 지정된 파일을 로드하여 그 안에 들어있는 메타데이터 정보를 사용하여 어셈블리를 빌드할 것이다.경로 없이 파일 이름만 지정하면 CSC.EXE에서는 다음의 순서에 따라 어셈블리를 찾기 위하여 경로 탐색을 하게 될 것이다.작업 중인 디렉터리CSC.EXE 파일과 CLR의 DLL들이 포함되어있는 디렉터리/lib 컴파일러 스위치를 통하여 지정된 모든 디렉터리들LIB 환경 변수에 지정된 모든 디렉터리들컴파일러/CLR이 설치된 디렉터리에 복사되는 어셈블리들은 장치 독립적이다. Uploaded by Notion2Tistory v..
목차1부. CLR의 기본3장. 공유 어셈블리와 강력한 이름의 어셈블리전역 어셈블리 캐시1부. CLR의 기본3장. 공유 어셈블리와 강력한 이름의 어셈블리전역 어셈블리 캐시어떻게 강력한 이름의 어셈블리를 배포하고 CLR이 정보를 사용하여 어셈블리의 위치를 파악하고 로드하는지 살펴볼 것이다.어떤 어셈블리가 여러 응용프로그램에 의하여 사용된다면, 어셈블리는 반드시 잘 알려진 디렉터리에 들어있어야 하고, CLR은 어 어셈블리에 대한 참조가 발견되었을 때 자동으로 찾아 볼 수 있는 고정된 위치를 알고 있어야 한다. 잘 알려진 위치라고 하는 곳은 바로 전역 어셈블리 캐시(Global Assmbly Cache, GAC)라는 곳이다.GAC 디렉터리는 일련의 구조를 가지고 있다. 수많은 하위 디렉터리들이 있으며, 하위 디..
목차1부. CLR의 기본3장. 공유 어셈블리와 강력한 이름의 어셈블리어셈블리를 강력한 이름으로 서명하기1부. CLR의 기본3장. 공유 어셈블리와 강력한 이름의 어셈블리어셈블리를 강력한 이름으로 서명하기잘 알려진 디렉터리에 같이 복사가 될 경우, 나중에 복사되는 어셈블리가 처음 복사된 어셈블리를 덮어쓰는 일이 생겨 이전 버전의 어셈블리를 참조하던 모든 응용프로그램들이 사용하던 함수를 찾을 수 없는 일이 생기게 된다. 이것이 바로 Windows에서의 DLL 지옥의 원형이며, 공유되는 DLL들을 모두 System32 디렉터리 아래로 복사하려고 하기 때문에 문제가 된다.분명한 것은 파일 이름을 이용해서 어셈블리를 구분하는 것만으로는 충분하지 않다는 것이다. CLR은 어셈블리들을 고유하게 식별할 수 있는 새로운 ..
목차1부. CLR의 기본3장. 공유 어셈블리와 강력한 이름의 어셈블리두 가지 어셈블리, 두 가지 배포 방법1부. CLR의 기본3장. 공유 어셈블리와 강력한 이름의 어셈블리문제의 핵심은 어떻게 해야 다른 응용프로그램의 기능을 망가뜨리지 않으면서 버그를 수정하고 새로운 기능을 파일에 추가할 수 있는지에 대한 것이다.두 가지 어셈블리, 두 가지 배포 방법CLR은 약한 이름의 어셈블리(Weakly Named Assembly)와 강력한 이름의 어셈블리(Strongly Named Assembly)라는 두 종류의 어셈블리를 지원한다.PE 파일 타입, PE32 또는 PE32+ 헤더, CLR 헤더, 메타데이터, 매니페스트 테이블, IL 코드까지 완벽하게 동일하다. 그리고 C# 컴파일러와 AL.EXE 유틸리티를 사용하여 ..