2011-06-14 2 views
4

구성 요소를 등록 할 필요없이 대상 컴퓨터에서 잘 작동하는 개발 된 등록되지 않은 COM 구성 요소가 있습니다. tlb가 임베드 된 dll과 구성 요소의 어셈블리 종속성 및 CLSID를 나열하는 매니페스트가있는 RT_MANIFEST 리소스입니다.Registration-Free COM 구성 요소를 개발 컴퓨터에 등록하지 않고 사용할 수 있습니까?

Visual Studio (2008)에서이 COM 구성 요소를 등록해야 적어도 시도한 두 가지 작업을 수행 할 수 있습니다. 구성 요소에 대한 참조를 추가 할 때 구성 요소가 등록되어 있지 않으면 참조에 대한 격리 된 속성을 선택할 수 없습니다. 또한 구성 요소가 등록되어 있지 않으면 디버거가 실행 중일 때 객체의 인스턴스를 만들 수 없습니다. 그러나 참조를 추가하고 응용 프로그램을 컴파일하고 구성 요소를 등록하지 않고 실행할 수 있습니다.

Visual Studio에서 등록하지 않은 COM 구성 요소를 등록하지 않고도 사용할 수 있습니까? 아니면 모든 것이 제대로 작동하려면 개발 컴퓨터에 등록되어 있어야합니까?

답변

8

COM 구성 요소의 컴파일 타임과 런타임 사용의 차이점을 이해하는 것이 중요합니다. Reg-free COM은 순전히 런타임 기능입니다. COM 인터페이스를 설명하는 매니페스트는 등록이 필요없는 부분입니다. 컴퓨터의 레지스트리에 COM 구성 요소를 등록 할 필요가 없습니다. 대신 등록 정보를 파일로 제공하십시오. 즉 설치 프로그램이 필요 없다는 뜻입니다. 또한 등록 문제로부터 격리된다는 것을 의미합니다. DLL 지옥으로 더 잘 알려져 있습니다.

레지스트리의 키 또는 매니페스트의 항목은 COM 클라이언트가 COM 개체의 인스턴스를 만들도록 요청할 때로드해야하는 DLL을 파악하는 데 중요합니다.

이것은 컴파일 타임과 매우 다릅니다. 형식 라이브러리는 컴파일러에게 올바른 코드를 작성했는지 여부를 알리는 데 매우 유용합니다. COM 구성 요소에는 실제로 IFoo 인터페이스가 있습니까? IFoo 인터페이스에는 실제로 두 개의 인수를 취하는 Mumble() 메서드가 있습니까? 타입 라이브러리는 컴파일러에게 인터페이스가 어떻게 보이는지 알려주고 컴파일러가 작성한 코드를 정적으로 검사 할 수 있도록합니다. '후기 바인딩 (late-binding)'btw와는 다른 형식 라이브러리없이 COM 클라이언트 코드를 작성할 수있는 옵션을 제공하므로 형식 검사가 필요하지 않습니다. 스크립팅 언어에서 공통적입니다.

반복 : 등록이 필요없는 COM은 설치에 관한 것이며 코드 작성에 관한 것이 아닙니다.

+0

감사합니다. 그것은 나를 위해 일을 명확히하는 데 도움이되었습니다. – dschaeffer

관련 문제