다음을 통해 공유


버전별 특성 적용

.NET Framework 버전 1.1 이상을 사용하는 경우 관리되는 소스 코드에 디자인 타임 특성을 적용하여 Windows 레지스트리에 등록된 형식을 올바르게 활성화할 수 있습니다. 이 항목에서는 ComCompatibleVersionAttributeTypeLibVersionAttribute 특성을 적용하는 경우에 대해 설명합니다.

생성된 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 참조 문서를 참조하십시오.

참고 항목

개념

COM 응용 프로그램에서 런타임 초기화

버전별 레지스트리 키

Side-By-Side 실행을 위한 COM 응용 프로그램 구성

COM 구성 요소 및 Side-By-Side 실행

기타 리소스

COM Interop의 Side-By-Side 실행