註冊和選取 (原始檔控制 VSPackage)
必須註冊原始檔控制 VSPackage 才能將其公開給 Visual Studio。 如果已註冊多個原始檔控制 VSPackage,使用者可以選取適當時間要載入的 VSPackage。 如需 VSPackages 以及如何註冊 VSPackage 的詳細資訊,請參閱 VSPackage。
註冊原始檔控制套件
原始檔控制套件已註冊,以便 Visual Studio 環境可以找到它並查詢其支援的功能。 這是根據延遲載入配置,只有在需要或明確請求其功能或命令時才建立套件的執行個體。
VSPackages 會將資訊放在版本特定的登錄機碼中,HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\X.Y,其中 X 是主要版本號碼,Y 是次要版本號碼。 這種做法提供支援並存安裝多個 Visual Studio 版的能力。
Visual Studio 使用者介面 (UI) 支援從多個已安裝的原始檔控制外掛程式 (透過原始檔控制配接器套件) 以及原始檔控制 VSPackages 中進行選取。 一次只能有一個使用中的原始檔控制外掛程式或 VSPackage。 不過,如下所述,IDE 允許透過自動方案型套件交換機制,在原始檔控制外掛程式和 VSPackage 之間切換。 原始檔控制 VSPackage 需要滿足一些要求才能啟用此選取機制。
登錄項目
原始檔控制套件需要三個私用 GUID:
套件 GUID:這是包含原始檔控制實作之套件的主要 GUID (本節中稱為 ID_Package)。
原始檔控制 GUID:這是原始檔控制 VSPackage 的 GUID,用來向 Visual Studio 原始檔控制 Stub 註冊,也用來做為命令 UI 內容 GUID。 原始檔控制服務 GUID 會在原始檔控制 GUID 下註冊。 在此範例中,原始檔控制 GUID 稱為 ID_SccProvider。
原始檔控制服務 GUID:這是 Visual Studio 所使用的私人服務 GUID (本節中稱為 SID_SccPkgService)。 除此之外,原始檔控制套件還需要為 VSPackages、工具視窗等定義其他 GUID。
原始檔控制 VSPackage 必須建立下列登錄項目:
索引鍵名稱 | 項目 |
---|---|
HKEY_LOCAL_MACHINE\ SOFTWARE\ Microsoft\ VisualStudio\ X.Y\ SourceControlProviders\ |
(default) = rg_sz:{ID_SccProvider} |
HKEY_LOCAL_MACHINE\ SOFTWARE\ Microsoft\ VisualStudio\ X.Y\ SourceControlProviders\ {ID_SccProvider}\ |
(default) = rg_sz:<易記的套件名稱> Service = rg_sz:{SID_SccPkgService} |
HKEY_LOCAL_MACHINE\ SOFTWARE\ Microsoft\ VisualStudio\ X.Y\ SourceControlProviders\ {ID_SccProvider}\ Name\ |
(default) = rg_sz:#<當地語系化名稱的資源識別碼> Package = rg_sz:{ID_Package} |
HKEY_LOCAL_MACHINE\ SOFTWARE\ Microsoft\ VisualStudio\ X.Y\ SolutionPersistence\ <PackageName>\ (請注意,Visual Studio 已經使用機碼名稱 SourceCodeControl ,而且無法做為 <PackageName> 的選擇。) |
(default) = rg_sz:{ID_Package} |
選取原始檔控制套件
可以同時註冊多個原始檔控制外掛程式 API 型外掛程式和原始檔控制 VSPackage。 選取原始檔控制外掛程式或 VSPackage 的流程必須確保 Visual Studio 在適當時間載入外掛程式或 VSPackage,並可以延遲載入不必要的元件,直到需要時才載入。 此外,Visual Studio 必須從其他非使用中的 VSPackage 中移除所有 UI (包括功能表項目、對話方塊和工具列),並顯示使用中 VSPackage 的 UI。
執行下列任何一項作業時,Visual Studio 會載入原始檔控制 VSPackage:
方案已開啟 (當方案在原始檔控制之下時)。
開啟原始檔控制下的方案或專案時,IDE 會載入為該方案指定的原始檔控制 VSPackage。
執行原始檔控制 VSPackage 的任何功能表命令。
原始檔控制 VSPackage 應該只有在實際使用時才載入所需的任何元件 (否則稱為延遲載入)。
自動方案型 VSPackage 交換
您可以透過 [原始檔控制] 類別下的 Visual Studio [選項] 對話方塊,手動交換原始檔控制 VSPackage。 自動方案型套件交換表示,為特定方案指定的原始檔控制套件會在開啟該方案時自動設定為使用中。 每個原始檔控制套件都應該實作 SetActive 和 SetInactive。 Visual Studio 處理原始檔控制外掛程式 (實作原始檔控制外掛程式 API) 與原始檔控制 VSPackages 之間的切換。
原始檔控制配接器套件可用來切換至任何原始檔控制外掛程式 API 外掛程式。 切換至中繼原始檔控制配接器套件並判斷哪些原始檔控制外掛程式必須設定為使用中或非使用中的流程對使用者而言是透明的。 當任何原始檔控制外掛程式為使用中時,配接器套件一律為使用中。 在兩個原始檔控制外掛程式之間切換相當於簡單載入和卸載外掛程式 DLL。 不過,切換至原始檔控制 VSPackage 涉及與 IDE 互動以載入適當的 VSPackage。
當開啟任何方案,且 VSPackage 的登錄機碼位於方案檔案中時,就會呼叫原始檔控制 VSPackage。 開啟方案時,Visual Studio 會尋找登錄值,並載入適當的原始檔控制 VSPackage。 所有原始檔控制 VSPackage 都必須具有上述登錄項目。 原始檔控制下的方案會標示為與特定原始檔控制 VSPackage 相關聯。 原始檔控制 VSPackage 必須實作 IVsSolutionPersistence,才能啟用自動方案型 VSPackage 交換。
用於套件選擇和切換的 Visual Studio UI
Visual Studio 在 [原始檔控制] 類別下的 [選項] 對話方塊中,提供原始檔控制 VSPackage 和外掛程式選取的 UI。 它可讓使用者選取使用中的原始檔控制外掛程式或 VSPackage。 下拉式清單包括:
所有已安裝的原始檔控制套件
所有已安裝的原始檔控制外掛程式
停用原始程式碼控制件的「none」選項
只有使用中原始檔控制選項的 UI 才會顯示。 VSPackage 選取會隱藏前一個 VSPackage 的 UI,並顯示新 UI。 使用中的 VSPackage 是根據每個使用者選取的。 如果使用者同時開啟多個 Visual Studio 複本,則每個複本都可能會使用不同的使用中 VSPackage。 如果多個使用者登入同一部電腦,則每個使用者都可以開啟個別的 Visual Studio 執行個體,每個執行個體都有不同的使用中 VSPackage。 當使用者關閉 Visual Studio 的多個執行個體時,上次開啟方案處於使用中的原始檔控制 VSPackage 會變成預設原始檔控制 VSPackage,以在重新啟動時設定為使用中。
不同於舊版 Visual Studio,IDE 重新啟動不再是切換原始檔控制 VSPackage 的唯一方式。 VSPackage 選取是自動的。 切換套件需要 Windows 使用者權限 (管理員或進階使用者)。