原始檔控制 VSPackage 架構
原始檔控制套件是使用 Visual Studio IDE 所提供之服務的 VSPackage。 原始檔控制套件會提供其功能做為原始檔控制服務功能以做交換。 此外,原始檔控制套件是比原始檔控制外掛程式更多用途的替代方案,可用於將原始檔控制整合到 Visual Studio 中。
實作原始檔控制外掛程式 API 的原始檔控制外掛程式必會遵守嚴格合約。 例如,外掛程式無法取代預設的 Visual Studio 使用者介面 (UI)。 此外,原始檔控制外掛程式 API 不讓外掛程式實作自己的原始檔控制模型。 不過,原始檔控制套件能克服這兩種限制。 原始檔控制套件可完全控制 Visual Studio 使用者的原始檔控制體驗。 此外,原始檔控制套件可使用自己的原始檔控制模型和邏輯,而且可定義所有原始檔控制相關的使用者介面。
原始檔控制套件元件
如架構圖所示,名為原始檔控制 Stub 的 Visual Studio 元件是 VSPackage,能整合原始檔控制套件與 Visual Studio。
原始檔控制 Stub 會處理下列工作。
提供原始檔控制套件註冊所需的通用 UI。
載入原始檔控制套件。
將原始檔控制套件設定為作用中/非作用中
原始檔控制 Stub 會尋找原始檔控制套件的作用中服務,並將 IDE 的所有傳入服務呼叫路由傳送至該套件。
原始檔控制配接器套件是 Visual Studio 所提供的特殊原始檔控制套件。 此套件是依據原始檔控制外掛程式 API 支援原始檔控制外掛程式的核心元件。 當原始檔控制外掛程式是作用中的外掛程式時,原始檔控制 Stub 會將其事件傳送至原始檔控制配接器套件。 因此,原始檔控制配接器套件會使用原始檔控制外掛程式 API 與原始檔控制外掛程式通訊,並提供所有原始檔控制外掛程式通用的預設 UI。
另一方面,當原始檔控制套件是作用中套件時,原始檔控制 Stub 會使用 Visual Studio SDK 原始檔控制套件介面直接與套件通訊。 原始檔控制套件負責裝載自己的原始檔控制 UI。
對於原始檔控制套件,Visual Studio 不供應原始檔控制程式碼或 API 來進行整合。 將此與建立原始檔控制外掛程式中所述的方法進行對比,其中原始檔控制外掛程式必須實作一組固定的函式和回呼。
和任何 VSPackage 一樣,原始檔控制套件是可使用
CoCreateInstance
建立的 COM 物件。 VSPackage 藉由實作 IVsPackage,以供 Visual Studio IDE 使用。 建立好執行個體時,VSPackage 會接收網站指標和 IServiceProvider 介面,以提供 IDE 中可用服務和介面的 VSPackage 存取權。撰寫 VSPackage 型原始檔控制套件時,需要具有比撰寫原始檔控制外掛程式 API 型外掛程式更進階的程式設計專業知識。