COM에 어셈블리 등록
업데이트: 2007년 11월
어셈블리 등록 도구(Regasm.exe)라는 명령줄 도구를 실행하여 COM에서 사용할 어셈블리를 등록하거나 등록을 취소할 수 있습니다. Regasm.exe는 COM 클라이언트에서 .NET 클래스를 투명하게 사용할 수 있도록 해당 클래스에 대한 정보를 시스템 레지스트리에 추가합니다. RegistrationServices 클래스에서는 여기에 해당하는 기능을 제공합니다.
관리되는 구성 요소는 Windows 레지스트리에 등록되어야 COM 클라이언트에서 활성화될 수 있습니다. 다음 표에서는 Regasm.exe가 일반적으로 Windows 레지스트리에 추가하는 키를 보여 줍니다. 000000은 실제 GUID 값을 나타냅니다.
GUID |
설명 |
레지스트리 키 |
---|---|---|
CLSID |
클래스 식별자 |
HKEY_CLASSES_ROOT\CLSID\{000…000} |
IID |
인터페이스 식별자 |
HKEY_CLASSES_ROOT\Interface\{000…000} |
LIBID |
라이브러리 식별자 |
HKEY_CLASSES_ROOT\TypeLib\{000…000} |
ProgID |
프로그래밍 식별자 |
HKEY_CLASSES_ROOT\000…000 |
HKCR\CLSID\{0000…0000} 키를 사용하면 기본값은 클래스의 ProgID로 설정되며 새로운 이름의 두 값, 즉 Class와 Assembly가 추가됩니다. 런타임에서는 레지스트리의 어셈블리 값을 읽은 다음, 해당 값을 런타임 어셈블리 확인기에 전달하며 어셈블리 확인기에서는 어셈블리의 이름 및 버전 번호와 같은 정보를 사용하여 어셈블리의 위치 찾기를 시도합니다. 어셈블리 확인기가 어셈블리를 찾기 위해서는 어셈블리가 다음 위치 중 한 곳에 있어야 합니다.
전역 어셈블리 캐시(강력한 이름의 어셈블리여야 함).
응용 프로그램 디렉터리. 응용 프로그램 경로에서 로드된 어셈블리는 해당 응용 프로그램에서만 액세스할 수 있습니다.
/codebase 옵션으로 Regasm.exe에 지정된 파일 경로
Regasm.exe는 HKCR\CLSID\{0000…0000} 키에 InProcServer32 키도 만듭니다. 이 키의 기본값은 공용 언어 런타임(Mscoree.dll)을 초기화하는 DLL의 이름으로 설정되어 있습니다.
레지스트리 항목 검사
COM interop에서는 모든 .NET Framework 클래스의 인스턴스를 만들 수 있도록 표준 클래스 팩터리를 구현합니다. 클라이언트에서는 다른 COM 구성 요소에서와 마찬가지로, 관리되는 DLL에 DllGetClassObject를 호출하여 클래스 팩터리를 가져오고 개체를 만들 수 있습니다.
이 때, 관리되는 개체를 공용 언어 런타임에서 만든다는 것을 나타내기 위해 일반적인 COM 형식 라이브러리 대신 Mscoree.dll가 표시됩니다.