專案屬性使用者介面
專案子類型可以使用專案 [屬性頁 ] 對話框中的專案,因為專案是由基底專案提供、隱藏或建立只讀控件和提供的完整頁面,或將專案子類型特定頁面新增至 [屬性頁 ] 對話框。
擴充專案屬性對話框
專案子類型會實作自動化擴充器和專案組態瀏覽物件。 這些擴充器會實作 IFilterProperties 介面,讓特定屬性隱藏或只讀。 基底專案的 [屬性頁] 對話框,由基底項目實作,接受自動化擴充器所執行的篩選。
[擴充 項目屬性 ] 對話框的程式如下所述:
基底專案會藉由實 IInternalExtenderProvider 作 介面,從專案子類型擷取擴充器。 基底專案的流覽、專案自動化和專案組態瀏覽物件全都會實作這個介面。
專案瀏覽物件的實IInternalExtenderProvider作,以及專案自動化物件委派給IInternalExtenderProvider專案子類型匯總工具的實作(也就是
QueryInterface
IInternalExtenderProvider項目物件上的 IVsHierarchy 。基底專案組態瀏覽物件也會實作 IInternalExtenderProvider 從專案子類型組態物件直接連線至 Automation Extender。 其實作委派給 IInternalExtenderProvider 專案子類型匯總工具所實作的介面。
GetProjectItem,由專案組態瀏覽物件實作,會傳 IVsHierarchy 回 物件。
專案子類型可以藉由擷取下列 __VSHPROPID2 值,為基底專案的各種可擴充對象判斷適當的 CATID:
若要判斷專案範圍的 CATID,專案子類型會擷取 VSITEMID 的上述屬性。來自的VSITEMID typedef
根目錄。 項目子類型可能也想要控制項目顯示哪些 [屬性頁 ] 對話框頁面,同時設定相依和設定無關。 某些項目子類型可能需要移除內建頁面,並新增專案子類型特定頁面。 為了啟用此功能,Managed 用戶端專案會針對下列屬性呼叫 GetProperty 方法:
VSHPROPID_PropertyPagesCLSIDList
— 以分號分隔的組態獨立屬性頁 CLSID 清單。VSHPROPID_CfgPropertyPagesCLSIDList —
以分號分隔的組態相依屬性頁 CLSID 清單。
因為專案子類型會 IVsHierarchy 匯總物件,所以它可以覆寫這些屬性的定義,以控制顯示哪些 屬性頁 對話方塊。 項目子類型可以從內部基底專案擷取這些屬性,然後視需要新增或移除 CLSID。
專案子類型所新增的新屬性頁會從基底項目實作傳送專案組態瀏覽物件。 此項目組態瀏覽物件支援 Automation Extenders。 如需 AutomationExtenders 的詳細資訊,請參閱 < Implementing and Using Automation Extenders>。 專案子類型呼叫 Extender[] 所實作的屬性頁,可擷取其自己的專案子類型組態瀏覽物件,以擴充基底專案的組態瀏覽物件。