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