내보낸 어셈블리 변환

어셈블리를 형식 라이브러리로 내보내는 도구 또는 API는 가장 바깥쪽에 있는 관리되는 어셈블리를 먼저 변환해야 합니다. 이 프로세스는 각 개별 어셈블리를 단일 형식 라이브러리로 변환하는데 이 때 어셈블리와 형식 라이브러리 사이에는 일대일 매핑이 부여됩니다. 어셈블리를 여러 형식 라이브러리로 분할할 수는 없습니다. 어셈블리는 변환 방법 또는 세부적인 내용에 관계 없이 항상 동일한 형식 라이브러리를 생성합니다.

어셈블리 및 형식 라이브러리 ID

어셈블리 ID는 다음 표에 나열된 4가지 요소로 구성됩니다.

요소

설명

Name

어셈블리를 식별하는 문자열입니다. 일반적으로 이 문자열은 확장명을 제외한 어셈블리 파일 이름과 같습니다.

공개 키

공개/개인 암호화 키 쌍의 공개 부분입니다.

버전

주 버전 번호, 부 버전 번호, 빌드 버전 번호 및 수정 버전 번호의 네 부분으로 구성된 숫자 문자열입니다.

문화권 문자열

어셈블리에서 지원하는 로캘입니다.

이 필드 요소를 조합하여 어셈블리를 식별하는 강력한 이름을 생성합니다.

일부 어셈블리 매니페스트

.assembly Sample as "Sample"
{
    publickey = (00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00   
                 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00   
                 B7 3C 60 FD 2D 6B E4 14 4E BD D1 B6 1A 09 FB F1   
                 23 FF A8 62 59 B3 86 0B 0A 73 10 98 51 E5 0E D6   
                 7E 10 2F A7 6E AF 1B E5 E8 F1 2E E6 9C F7 74 9A   
                 1A 9A 83 88 2C 70 C9 8B 52 AD 97 5C 23 52 D2 42   
                 D2 6C 64 14 E7 1D 1D 55 B4 F4 9C BB 86 7B 07 99   
                 E3 19 E8 E1 4A BC 7A 40 A6 A2 9D AD 96 9B E5 CA   
                 7C 10 5B 79 16 80 29 50 CD C3 63 D0 12 81 D0 18   
                 B4 AE DA EC CC ED 8E AF A4 08 14 05 C6 9C 7B C5)
  .ver 1:0:295:37445
  .locale = (65 00 6E 00 2D 00 55 00 53 00 00 00 )   // en-US
}

이와는 달리 형식 라이브러리 ID는 LIBID(라이브러리 식별자), 버전, LCID(로컬 ID)라는 세 가지 요소로 구성됩니다. 형식 정보를 포함하는 파일의 이름과 라이브러리 내에 정의된 이름 둘 다 라이브러리 ID의 일부가 아닙니다. LIBID, 버전 및 LCID를 사용하면 레지스트리를 통해 형식 라이브러리를 찾을 수 있습니다.

형식 라이브러리 표현

[ uuid(0D26FC72-7EB1-4565-AA75-DA5F177EFA66),
  lcid(0x0409), 
  version(2.1), 
  helpstring("Acme Widget Library")
] 
library Acme 
{
…
}; 

라이브러리 식별자(LIBID)

내보내기 프로세스에서 어셈블리를 형식 라이브러리로 변환하는 경우 라이브러리의 ID는 유지됩니다. 고유하게 식별된 각 어셈블리는 고유하게 식별된 형식 라이브러리가 됩니다. 고유성을 보장하기 위해 변환 프로세스에서는 어셈블리의 이름, 버전 및 공개 키를 사용하여 LIBID를 생성합니다.

특히 이 둘을 조합하면 다음과 같은 내용이 보장됩니다.

  • 이름, 버전 및 공개 키 조합은 항상 동일한 LIBID를 생성합니다.

  • 이름, 버전 및 공개 키 조합이 다른 두 어셈블리는 동일한 LIBID를 생성하지 않습니다.

GuidAttribute를 적용하여 명시적으로 LIBID를 설정할 수 있습니다.

버전 및 빌드 번호

또한 형식 라이브러리는 두 부분으로 구성된 버전 번호를 포함하고 어셈블리는 네 부분으로 구성된 버전 번호를 포함하지만 변환 프로세스는 어셈블리의 버전 정보를 형식 라이브러리에 전달합니다. 어셈블리의 주 버전 번호와 부 버전 번호는 형식 라이브러리로 전달되고 어셈블리 빌드 번호는 변환 과정에서 삭제됩니다. 이는 빌드 번호만 다른 두 어셈블리는 항상 동일한 형식 라이브러리를 생성한다는 것을 나타냅니다. 주 버전 번호 및 부 버전 번호가 0인 어셈블리(0.0.X.X)는 버전 번호가 1.0인 형식 라이브러리를 만듭니다.

일반적으로 여러 어셈블리 버전에서 생성된 형식 라이브러리의 내용에 대해서는 보장하지 않습니다. 버전 1.0의 특정 라이브러리에서 정의된 형식이 동일한 라이브러리의 둘째 버전에서는 같지 않을 수도 있습니다.

로캘 정보

어셈블리의 로캘 식별자 문자열(예: us-en)은 LCID로 변환되고 형식 라이브러리의 LCID 필드에 저장됩니다. 어셈블리에 로캘 식별자 문자열이 없는 경우 내보내기 프로세스는 LCID를 0으로 설정합니다.

마침표를 밑줄로

형식 라이브러리 이름에 사용할 수 없는 마침표가 어셈블리 이름에 포함되어 있는 경우가 종종 있습니다. 이런 경우 내보내기 프로세스는 어셈블리의 이름 필드에 있는 마침표를 밑줄로 변환합니다.

도움말 문자열

디자인 타임에서 어셈블리에 적용되는 경우 내보내기 프로세스는 AssemblyDescriptionAttribute를 형식 라이브러리에 연결된 DocString 또는 도움말 문자열에 복사합니다. 형식 라이브러리에서 HelpFile 필드와 HelpContext 필드 모두 설정되지 않으며 형식 라이브러리의 LIBFLAGS가 설정되지 않습니다.

기타 어셈블리 필드

Processor, OSInformation, CodeBase, Alias, AssemblyHash, ConfigurationFlags와 같은 기타 어셈블리 필드는 변환 중에 모두 삭제됩니다.

내보내기 프로세스는 hidden, restricted, control 등의 형식 라이브러리 특성을 설정하지 않습니다.

참고 항목

개념

내보낸 모듈 변환

내보낸 형식 변환

내보낸 멤버 변환

내보낸 매개 변수 변환

기타 리소스

어셈블리를 형식 라이브러리로 변환 요약