BuildManager 物件簡介
BuildManager 物件是讓協力廠商開發人員用來管理可攜式執行 (PE) 檔。PE 檔是從自訂工具編譯而來,自訂工具會指示專案系統要將其輸出內容編譯成 Temporary PE 檔。
BuildManager 物件和自訂工具是用來開發視覺化設計工具 (Visual Designer)。Visual Studio 中的設計工具會為檔案提供圖形化使用者介面。為了要建立使用者介面,設計工具必須要能夠將專案項目檔案中所描述的型別執行個體化 (Instantiate)。從自訂工具產生的 Temporary PE 檔是組件 (Assembly) 檔,這種檔案會封裝自訂工具輸出之專案項目中所描述的型別。因此,設計工具及自訂工具通常會被一起用來產生設計階段使用者介面。用來從 XSD 檔案產生類別的自訂工具就是一個非常好的範例。有時候為了要瞭解透過資料集所提供的資料內容,視覺化設計工具必須將產生的類別執行個體化,如此才能提供 UI 來啟用資料繫結等功能的設計階段支援。
自訂工具
自訂工具會採用專案項目檔當做輸入,並產生新的專案項目檔,這個檔案接下來可能會被編譯。一般的事件順序是:
使用者或設計人員設定專案項目的 CustomTool 屬性。
以專案項目內容為輸入來執行自訂工具。如果自訂工具無法辨識輸入,將根據自訂工具的判定而將錯誤報告給使用者。如需詳細資訊,請參閱 RunCustomTool。
自訂工具輸出與專案參考一起編譯成可攜式執行檔 (Temporary PE 檔)。
注意事項 如果自訂工具在登錄時將 GeneratesDesignTimeOutput 登錄值設定為 1,則只會將自訂工具輸出編譯成 Temporary PE 檔。
呼叫 BuildManager 物件的 BuildDesignTimeOutput 方法,取得 PE 檔的說明。
由 BuildDesignTimeOutput 方法傳回的 Temporary PE 檔輸出如下:
<root> <Application private_binpath="full output path to temporary PE, excluding the name"/> <Assembly codebase = "filename of the temporary PE, e.g., sample.dll"" name = "name of the temporary PE == filename without the extension, e.g., "sample"" version = "always "0.0.0.0"" snapshot_id = "unique ID number" replaceable = "currently unused; always set to "True"" /> </root>
BuildManager 物件
BuildManager 物件可以用來存取 Temporary PE 檔。DesignTimeOutputMonikers 屬性是專案中所有 PE Moniker (名稱) 組成的陣列。專案系統會根據專案階層架構指派 PE Moniker。例如,如果 Project1 的 Folder1 中有一個 XML 設計工具檔案 SomeData.xsd,產生的輸出檔為 SomeData.cs,那麼 Moniker 就是 Project1\Folder1\SomeData.cs。BuildDesignTimeOutput 方法會將 Moniker 當做參數,並以 XML 字串傳回 PE 檔的說明。
將產生 PE 檔的專案項目檔案從專案中刪除時,會引發 BuildManagerEventsClass 物件的 DesignTimeOutputDeleted 事件。每當產生 Temporary PE 檔的自訂工具 (單一檔案產生器) 執行時,則會引發 DesignTimeOutputDirty 事件。在下列時機會執行專案中所有的單一檔案產生器:
在升級之後立即開啟專案時。
當根命名空間變更時。
在下列時機會執行個別的單一檔案產生器:
儲存包含單一檔案產生器的文件 (例如資料集) 時。
包含單一檔案產生器的文件已開啟並做變更,但使用者卻切換至 Visual Studio 中的其他文件時。
重新命名或移動專案中包含單一檔案產生器的檔案時。
使用者以符號形式重新命名了在單一檔案產生器之輸出檔中使用的型別時。例如,如果使用者在 'Type' 型別上叫用符號重新命名,而該型別已用於 dataset1.vb (資料集的輸出),在重新命名作業完成之後便會叫用單一檔案產生器。
如需如何使用 BuildManager 物件設計程式的示範,請按下表中的連結。
若要 |
請參閱 |
---|---|
顯示 Temporary PE 檔的 Moniker,並監視 BuildManagerEvents。 |
協力廠商
BuildManager 物件的許多功能也可以透過 ITypeResolutionService 介面存取。但是對於想要具備全面性設計工具的協力廠商而言,則必須使用 DesignTimeOutputMonikers 屬性和 BuildDesignTimeOutput 方法。如需詳細資訊,請參閱 Visual Studio Automation 的範圍。