共用方式為


原始檔控制 VSPackage 架構

原始檔控制套件是使用 Visual Studio IDE 所提供服務的 VSPackage。 作為回報,原始檔控制套件會提供其功能作為原始檔控制服務。 此外,原始檔控制套件是比原始檔控制外掛程式更通用的替代方案,可將原始檔控制整合到 Visual Studio 中。

實作原始檔控制外掛程式 API 的原始檔控制外掛程式會遵守嚴格的合約。 例如,外掛程式無法取代預設的 Visual Studio 使用者介面 (UI)。 此外,原始檔控制外掛程式 API 不會讓外掛程式實作自己的原始檔控制模型。 然而,原始檔控制套件克服了這兩個限制。 原始檔控制套件可完全控制 Visual Studio 使用者的原始檔控制體驗。 此外,原始檔控制套件可以使用自己的原始檔控制模型和邏輯,而且可以定義所有與原始檔控制相關的使用者介面。

Source-Control 封裝元件

如架構圖所示,Visual Studio 中名為「原始碼控制存根」的元件是一個 VSPackage,負責將原始碼控制套件整合進 Visual Studio。

原始檔控制存根會處理下列工作。

  • 提供原始檔控制套件註冊所需的通用 UI。

  • 載入版本控制套件。

  • 將原始檔控制套件設定為作用中/非作用中。

    原始檔控制存根會尋找原始檔控制套件中的正在運行的服務,並將所有來自 IDE 的服務呼叫路由至該套件。

    原始檔控制配接器套件是 Visual Studio 提供的特殊原始檔控制套件。 此套件是支援以原始檔控制外掛程式 API 為基礎的原始檔控制外掛程式的核心元件。 當版本控制外掛程式是作用中的外掛程式時,版本控制存根會將其事件傳送至版本控制配接器套件。 反過來,原始檔控制配接器套件會使用原始檔控制外掛程式 API 與原始檔控制外掛程式通訊,並提供所有原始檔控制外掛程式通用的預設 UI。

    另一方面,當原始檔控制套件是作用中套件時,原始檔控制存根會使用 Visual Studio SDK Source-Control 套件介面直接與套件通訊。 版本控制套件負責承載自己的版本控制 UI。

    原始檔控制架構圖形

    針對原始檔控制套件,Visual Studio 不會提供原始檔控制程式碼或用於整合的 API。 將此與 建立原始檔控制外掛程式 中所述的方法進行對比,其中原始檔控制外掛程式必須實作一組剛性的函式和回呼。

    如同任何 VSPackage,原始碼控制套件是可以使用 CoCreateInstance 建立的 COM 物件。 VSPackage 藉由實作 IVsPackage 使 Visual Studio IDE 可使用。 建立執行個體時,VSPackage 會收到網站指標和 IServiceProvider 介面,讓 VSPackage 存取 IDE 中可用服務和介面。

    撰寫 VSPackage 型原始檔控制套件需要比撰寫原始檔控制外掛程式 API 型外掛程式更進階的程式設計專業知識。