使用專案 Factory 建立專案
發行︰ 2016年6月
如需 Visual Studio 2017 的最新文件請參閱 Visual Studio 2017 文件。
專案中的型別Visual Studio使用專案 factory建立專案中物件的執行個體。 專案 factory 如下 cocreatable COM 物件的標準 class factory。 但是,並非 cocreatable 專案物件︰ 只可以建立使用專案 factory。
Visual Studio IDE 呼叫在 VSPackage 中實作,當使用者載入現有的專案,或建立新的專案中的專案 factory Visual Studio。 新的專案物件會提供 IDE,具有足夠的資訊填入 [方案總管] 中。 新的專案物件也會提供所需的介面以支援所有相關的 UI 動作起始的 IDE。
您可以實作IVsProjectFactory中您專案中的類別介面。 一般而言,它位於自己的模組。
如需範例實作的IVsProjectFactory
介面,請參閱位於的 PrjFac.cpp基本專案範例目錄。
支援彙總的擁有者的專案必須保存在其專案檔案的擁有者金鑰。 當CreateProject方法呼叫專案具有擁有者索引鍵,擁有的專案將其擁有者索引鍵轉換成 GUID 然後呼叫專案 factoryCreateProject
要實際建立此專案處理站上的方法。
建立擁有的專案
擁有者會建立一個擁有的專案,在兩個階段︰
藉由呼叫PreCreateForOwner方法。 這可讓擁有的專案有機會建立彙總的專案物件,根據輸入控制
IUnknown
。 擁有的專案會傳遞內部IUnknown
和彙總的物件傳回至擁有者專案。 這可讓擁有的專案有機會儲存內部IUnknown
。藉由呼叫InitializeForOwner方法。 擁有的專案會執行其所有具現化,而不是呼叫呼叫這個方法
IVsProjectFactory::CreateProject
時的情況不屬於的專案。 輸入VSOWNEDPROJECTOBJECT
列舉型別通常是彙總所擁有的專案。 擁有的專案可以使用這個變數,以判斷是否已建立其專案物件 (cookie 不等於 NULL),或必須建立 (cookie 等於 NULL)。
唯一的專案 GUID,類似於 cocreatable 的 COM 物件的 CLSID 來識別專案類型。 通常,雖然可能有一個專案的處理站建立單一專案類型的執行個體的一個專案 factory 控點會處理多個專案類型的 GUID。
特定的副檔名相關聯的專案類型。 當使用者嘗試開啟現有的專案檔案,或嘗試複製的範本來建立新的專案時,則 IDE 會使用檔案上延伸來判斷對應的專案的 GUID。
IDE 判斷是否必須建立新的專案或開啟現有的專案特定的型別,IDE 會使用中的資訊,如 [HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\8.0\Projects] 若要尋找的 VSPackage 系統登錄會實作必要的專案 factory。 IDE 會載入此 VSPackage。 在SetSite VSPackage 的方法,必須向其專案 factory IDE 藉由呼叫RegisterProjectType方法。
主要方法IVsProjectFactory
介面是CreateProject這應該處理兩種案例︰ 開啟現有的專案,並建立新的專案。 大部分的專案及其專案將狀態儲存在專案檔。 一般而言,建立新專案,讓範本檔案的複本傳遞至CreateProject
方法,然後開啟複本。 現有的專案由具現化直接開啟專案檔傳遞至CreateProject
方法。 CreateProject
方法可以視需要對使用者顯示其他 UI 功能。
專案可以也不使用檔案和,相反地,其專案將狀態儲存在檔案系統,例如資料庫或 Web 伺服器以外的儲存機制。 在此情況下,檔案名稱參數傳遞至CreateProject
方法不是實際的檔案系統路徑,而是唯一的字串 — URL,以識別專案資料。 您不需要將傳遞至範本檔案複製CreateProject
觸發要執行的適當建構順序。
另請參閱
IVsOwnedProjectFactory
IVsProjectFactory
IVsRegisterProjectTypes
檢查清單︰ 建立新的專案類型