原始檔控制套件是使用 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 型外掛程式更進階的程式設計專業知識。