프로젝트 속성 사용자 인터페이스
프로젝트 하위 형식은 기본 프로젝트에서 제공된 대로 프로젝트 속성 페이지 대화 상자의 항목을 사용할 수도 있고, 제공된 대로 읽기 전용 컨트롤과 전체 페이지를 숨기거나 만들 수도 있으며, 속성 페이지 대화 상자에 프로젝트 하위 형식 관련 페이지를 추가할 수도 있습니다.
프로젝트 속성 대화 상자 확장
프로젝트 하위 형식은 Automation Extender 및 프로젝트 구성 찾아보기 개체를 구현합니다. 이러한 Extender는 IFilterProperties 인터페이스를 구현하여 특정 속성을 숨기거나 읽기 전용으로 만듭니다. 기본 프로젝트에 의해 구현된 기본 프로젝트의 속성 페이지 대화 상자는 Automation Extender에서 수행하는 필터링을 적용합니다.
프로젝트 속성 대화 상자를 확장하는 프로세스는 다음과 같습니다.
기본 프로젝트는 IInternalExtenderProvider 인터페이스를 구현하여 프로젝트 하위 형식에서 Extender를 검색합니다. 기본 프로젝트의 찾아보기, 프로젝트 자동화 및 프로젝트 구성 찾아보기 개체는 모두 이 인터페이스를 구현합니다.
프로젝트 찾아보기 개체 및 프로젝트 자동화 개체의 IInternalExtenderProvider 구현은 프로젝트 하위 형식 집계의 IInternalExtenderProvider 구현에 위임합니다(즉, IVsHierarchy 프로젝트 개체의 IInternalExtenderProvider에 대해
QueryInterface
함).또한 기본 프로젝트 구성 찾아보기 개체는 IInternalExtenderProvider를 구현하여 프로젝트 하위 형식 구성 개체에서 Automation Extender에 직접 연결합니다. 이 구현은 프로젝트 하위 형식 집계에 의해 구현된 IInternalExtenderProvider 인터페이스에 위임합니다.
프로젝트 구성 찾아보기 개체에 의해 구현된 GetProjectItem은 IVsHierarchy 개체를 반환합니다.
프로젝트 하위 형식은 다음 __VSHPROPID2 값을 검색하여 런타임에 기본 프로젝트의 다양하고 확장 가능한 개체에 적합한 CATID를 확인할 수 있습니다.
프로젝트 범위의 CATID를 확인하기 위해 프로젝트 하위 형식이 VSITEMID typedef
에서 VSITEMID.Root에 대한 위의 속성을 검색합니다. 또한 프로젝트 하위 형식은 구성에 종속적인 프로젝트와 구성에 독립적인 프로젝트 모두에 대해 표시되는 속성 페이지 대화 상자 페이지도 제어할 수 있습니다. 일부 프로젝트 하위 형식은 기본 제공 페이지를 제거하고 프로젝트 하위 형식별 페이지를 추가해야 할 수 있습니다. 이를 사용하도록 설정하기 위해 관리되는 클라이언트 프로젝트가 다음 속성에 대한 GetProperty 메서드를 호출합니다.
VSHPROPID_PropertyPagesCLSIDList
— 구성에 독립적인 속성 페이지의 CLSID를 세미콜론으로 구분한 목록입니다.VSHPROPID_CfgPropertyPagesCLSIDList —
구성에 종속적인 속성 페이지의 CLSID를 세미콜론으로 구분한 목록입니다.
프로젝트 하위 형식은 IVsHierarchy 개체를 집계하기 때문에 이러한 속성의 정의를 재정의하여 어떤 속성 페이지 대화 상자를 표시할지 제어할 수 있습니다. 프로젝트 하위 형식은 내부 기본 프로젝트에서 이러한 속성을 검색한 다음 필요에 따라 CLSID를 추가하거나 제거할 수 있습니다.
프로젝트 하위 형식에 의해 추가된 새 속성 페이지는 기본 프로젝트 구현에서 프로젝트 구성 찾아보기 개체를 전달합니다. 이 프로젝트 구성 찾아보기 개체는 Automation Extender를 지원합니다. AutomationExtenders에 대한 자세한 내용은 Automation Extender 구현 및 사용을 참조하세요. 기본 프로젝트의 구성 찾아보기 개체를 확장하는 자체 프로젝트 하위 형식 구성 찾아보기 개체를 검색하기 위해 프로젝트 하위 형식 호출 Extender[]에 의해 구현되는 속성 페이지입니다.