.NET Framework 버전 1.1 이상을 사용하는 경우 관리되는 소스 코드에 디자인 타임 특성을 적용하여 Windows 레지스트리에 등록된 형식을 올바르게 활성화할 수 있습니다. 이 항목에서는 ComCompatibleVersionAttribute 및 TypeLibVersionAttribute 특성을 적용하는 경우에 대해 설명합니다.
생성된 GUID와고정 GUID 비교
/tlb 옵션이 지정된 어셈블리 등록 도구(Regasm.exe)와 형식 라이브러리 내보내기(Tlbexp.exe)에서는 COM에서 사용하기 위해 내보낸 어셈블리의 버전 번호에 따라 CLSID(클래스 식별자)를 생성합니다. 내보내는 새 버전의 어셈블리마다 해당 어셈블리 버전에 고유한 CLSID가 포함됩니다. COM 응용 프로그램에서는 CoCreateInstance 메서드를 호출할 때 이 CLSID를 사용하여 클래스를 식별합니다.
이 동작은 새 어셈블리 버전이 이전 버전과 호환되지 않을 경우에 유용합니다. 예를 들어 새 어셈블리에서 하나 이상의 형식이 제거되면 기존 버전과 새 버전이 호환되지 않습니다.
![]() |
---|
CLSID와 달리 ProgID(프로그래밍 ID)는 새 버전의 어셈블리에서도 변경되지 않습니다.호환되지 않는 새 어셈블리를 생성할 때 수동으로 ProgID를 변경하려면 ProgIdAttribute를 적용해야 합니다. |
그러나 대부분의 어셈블리가 이전 버전과 호환되며, 어셈블리의 개발자는 응용 프로그램이 최신 버전을 사용하도록 할 수 있습니다. 고정 GUID를 사용하여 여러 어셈블리 버전 간에 CLSID를 동일하게 유지하면 기존 COM 응용 프로그램이 이전 어셈블리를 사용할 수 없어도 다시 컴파일할 필요 없이 새 버전의 어셈블리에 있는 형식을 사용할 수 있습니다.
ComCompatibleVersionAttribute는 현재 어셈블리 버전의 모든 CLSID를 이전 버전의 CLSID와 동일하게 합니다. 이 특성의 적용 방법에 대한 자세한 내용은 ComCompatibleVersionAttribute 참조 문서를 참조하십시오.
형식 라이브러리 버전
형식 라이브러리 버전 번호에는 해당 형식 라이브러리를 만들 때 사용된 어셈블리의 주 번호와 부 번호가 포함됩니다. 반면, 어셈블리 버전 번호는 네 부분으로 구성됩니다. 두 어셈블리 버전이 1.0.0.0과 1.2.500.0처럼 서로 완전히 다르면 자동으로 서로 다른 형식 라이브러리 버전(1.0 및 1.2)이 생성됩니다. 그러나 두 어셈블리 버전이 1.2.0.0과 1.2.500.0처럼 비슷하면 COM에서 사용하기 위해 내보내질 때 두 어셈블리에서 동일한 형식 라이브러리 버전(1.2)이 생성됩니다.
TypeLibraryVersionAttribute를 사용하면 관리되는 소스 코드에서 명시적으로 형식 라이브러리 버전 번호를 지정할 수 있습니다. 이 특성의 사용 방법에 대한 자세한 내용은 TypeLibVersionAttribute 참조 문서를 참조하십시오.
참고 항목
개념
Side-By-Side 실행을 위한 COM 응용 프로그램 구성