Instalowanie wtyczki kontroli źródła

Tworzenie wtyczki kontroli źródła obejmuje trzy kroki:

  1. Utwórz bibliotekę DLL z funkcjami zdefiniowanymi w sekcji Dokumentacja interfejsu API wtyczki kontroli źródła w tej dokumentacji.

  2. Zaimplementuj funkcje zdefiniowane przez wtyczkę kontroli źródła. Gdy program Visual Studio go wywołuje, udostępnij interfejsy i okna dialogowe z wtyczki.

  3. Zarejestruj bibliotekę DLL, wprowadzając odpowiednie wpisy rejestru.

Integracja z programem Visual Studio

Program Visual Studio obsługuje wtyczki kontroli źródła zgodne z interfejsem API wtyczki kontroli źródła.

Rejestrowanie wtyczki kontroli źródła

Zanim uruchomione zintegrowane środowisko projektowe (IDE) może wywołać system kontroli źródła, najpierw musi znaleźć wtyczkę kontroli źródła biblioteki DLL, która eksportuje interfejs API.

Aby zarejestrować bibliotekę DLL wtyczki kontroli źródła

  1. Dodaj dwa wpisy w kluczu HKEY_LOCAL_MACHINE w podkluczu SOFTWARE , który określa podklucz nazwy firmy, a następnie podklucz nazwy produktu. Wzorzec to HKEY_LOCAL_MACHINE\SOFTWARE\nazwa> firmy\<<nazwa> produktu\<wartość wpisu> = . Dwa wpisy są zawsze nazywane SCCServerName i SCCServerPath. Każdy z nich jest zwykłym ciągiem.

    Jeśli na przykład nazwa firmy to Microsoft, a produkt kontroli źródła ma nazwę Source Sejf, ta ścieżka rejestru będzie HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Source Sejf. W tym podkluczu pierwszy wpis SCCServerName jest ciągiem czytelnym dla użytkownika nazewnictwa produktu. Drugi wpis SCCServerPath jest pełną ścieżką do biblioteki DLL wtyczki kontroli źródła, z którą środowisko IDE powinno nawiązać połączenie. Poniżej przedstawiono przykładowe wpisy rejestru:

    Przykładowy wpis rejestru Przykładowa wartość
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Source Sejf\SCCServerName Microsoft Visual Source Sejf
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Source Sejf\SCCServerPath c:\vss\win32\ssscc.dll

    Uwaga

    SCCServerPath to pełna ścieżka do wtyczki Source Sejf. Wtyczka kontroli źródła będzie używać różnych nazw firm i produktów, ale tych samych ścieżek wpisu rejestru.

  2. Następujące opcjonalne wpisy rejestru mogą służyć do modyfikowania zachowania wtyczki kontroli źródła. Te wpisy są w tym samym podkluczu co SccServerName i SccServerPath.

    • Można użyć wpisu HideInVisualStudioregistry , jeśli nie chcesz, aby wtyczka kontroli źródła była wyświetlana na liście Wybór wtyczki programu Visual Studio. Ten wpis będzie również mieć wpływ na automatyczne przełączanie do wtyczki kontroli źródła. Jednym z możliwych zastosowań tego wpisu jest podanie pakietu kontroli źródła, który zastępuje wtyczkę kontroli źródła, ale chcesz ułatwić użytkownikowi migrację z używania wtyczki kontroli źródła do pakietu kontroli źródła. Po zainstalowaniu pakietu kontroli źródła ustawia ten wpis rejestru, który ukrywa wtyczkę.

      HideInVisualStudio jest wartością DWORD i jest ustawiona na 1 , aby ukryć wtyczkę lub 0 , aby wyświetlić wtyczkę. Jeśli wpis rejestru nie jest wyświetlany, domyślne zachowanie polega na wyświetlaniu wtyczki.

    • Wpis rejestru DisableSccManager może służyć do wyłączenia lub ukrycia opcji menu Uruchom <serwer kontroli> źródła, która zwykle jest wyświetlana w podmenu Kontrola źródła plików>. Wybranie tej opcji menu wywołuje funkcję SccRunScc . Wtyczka kontroli źródła może nie obsługiwać programu zewnętrznego i dlatego może być konieczne wyłączenie lub nawet ukrycie opcji menu Uruchom .

      DisableSccManager jest wartością DWORD i jest ustawiona na 0 , aby włączyć opcję menu Uruchom <serwer kontroli> źródła, ustaw wartość 1 , aby wyłączyć opcję menu, i ustaw wartość 2 , aby ukryć opcję menu. Jeśli ten wpis rejestru nie zostanie wyświetlony, domyślne zachowanie polega na wyświetlaniu opcji menu.

    Przykładowy wpis rejestru Przykładowa wartość
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Source Sejf\HideInVisualStudio 1
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Source Sejf\DisableSccManager 1
  3. Dodaj podklucz SourceCodeControlProvider pod kluczem HKEY_LOCAL_MACHINE w podkluczu SOFTWARE.

    W tym podkluczu wpis rejestru ProviderRegKey jest ustawiony na ciąg reprezentujący podklucz umieszczony w rejestrze w kroku 1. Wzorzec to HKEY_LOCAL_MACHINE\SOFTWARE\SourceCodeControlProvider\ProviderRegKey = SOFTWARE\<nazwa firmy\<nazwa>> produktu.

    Poniżej znajduje się przykładowa zawartość dla tego podklucza.

    Wpis rejestru Przykładowa wartość
    HKEY_LOCAL_MACHINE\SOFTWARE\SourceCodeControlProvider\ProviderRegKey SOFTWARE\Microsoft\Source Sejf

    Uwaga

    Wtyczka kontroli źródła będzie używać tych samych nazw podklucza i pozycji, ale wartość będzie inna.

  4. Utwórz podklucz o nazwie InstalledSCCProviders w podkluczu SourceCodeControlProvider , a następnie umieść jeden wpis w tym podkluczu.

    Nazwa tego wpisu to czytelna dla użytkownika nazwa dostawcy (taka sama jak wartość określona dla wpisu SCCServerName), a wartość jest po raz kolejny podkluczem utworzonym w kroku 1. Wzorzec to HKEY_LOCAL_MACHINE\SOFTWARE\SourceCodeControlProvider\InstalledSCCProviders\<nazwa wyświetlana = >SOFTWARE\<nazwa firmy\<nazwa>> produktu.

    Na przykład:

    Przykładowy wpis rejestru Przykładowa wartość
    HKEY_LOCAL_MACHINE\SOFTWARE\SourceCodeControlProvider\InstalledSCCProviders\Microsoft Visual Source Sejf SOFTWARE\Microsoft\Source Sejf

    Uwaga

    W ten sposób może być zarejestrowanych wiele wtyczek kontroli źródła. W ten sposób program Visual Studio znajduje wszystkie zainstalowane wtyczki interfejsu API kontroli kodu źródłowego.

Jak środowisko IDE lokalizuje bibliotekę DLL

Środowisko IDE programu Visual Studio ma dwa sposoby znajdowania biblioteki DLL wtyczki kontroli źródła:

  • Znajdź domyślną wtyczkę kontroli źródła i połącz się z nią w trybie dyskretnym.

  • Znajdź wszystkie zarejestrowane wtyczki kontroli źródła, z których użytkownik wybierze jeden.

    Aby zlokalizować bibliotekę DLL w pierwszy sposób, środowisko IDE znajduje się w podkluczu HKEY_LOCAL_MACHINE\Software\SourceCodeControlProvider dla wpisu ProviderRegKey. Wartość tego wpisu wskazuje inny podklucz. Następnie środowisko IDE wyszukuje wpis o nazwie SccServerPath w tym drugim podkluczu w obszarze HKEY_LOCAL_MACHINE. Wartość tego wpisu wskazuje środowisko IDE do biblioteki DLL.

Uwaga

Środowisko IDE nie ładuje bibliotek DLL ze ścieżek względnych (na przykład .\NewProvider.DLL). Należy określić pełną ścieżkę do biblioteki DLL (na przykład c:\Providers\NewProvider.DLL). Zwiększa to bezpieczeństwo środowiska IDE, uniemożliwiając ładowanie nieautoryzowanych lub personifikowanych bibliotek DLL wtyczek.

Aby zlokalizować bibliotekę DLL w drugi sposób, środowisko IDE znajduje się w podkluczu HKEY_LOCAL_MACHINE\Software\SourceCodeControlProvider\InstalledSCCProviders dla wszystkich wpisów. Każdy wpis ma nazwę i wartość. Środowisko IDE wyświetla listę tych nazw użytkownikowi. Gdy użytkownik wybierze nazwę, środowisko IDE znajdzie wartość wybranej nazwy wskazującej podklucz. Środowisko IDE szuka wpisu o nazwie SccServerPath w tym podkluczu w obszarze HKEY_LOCAL_MACHINE. Wartość tego wpisu wskazuje środowisko IDE na poprawną bibliotekę DLL.

Wtyczka kontroli źródła musi obsługiwać oba sposoby znajdowania biblioteki DLL, a w związku z tym ustawia wartość ProviderRegKey, zastępując wszystkie poprzednie ustawienia. Co ważniejsze, należy dodać się do listy InstalledSccProviders , aby użytkownik mógł wybrać wtyczkę kontroli źródła do użycia.

Uwaga

Ponieważ jest używany klucz HKEY_LOCAL_MACHINE, można zarejestrować tylko jedną wtyczkę kontroli źródła jako domyślną wtyczkę kontroli źródła na danym komputerze (jednak program Visual Studio umożliwia użytkownikom określenie, która wtyczka kontroli źródła chce faktycznie używać dla określonego rozwiązania). Podczas procesu instalacji sprawdź, czy wtyczka kontroli źródła jest już ustawiona; Jeśli tak, poproś użytkownika, czy ustawić nową wtyczkę kontroli źródła instalowaną jako domyślną. Podczas odinstalowywania nie usuwaj innych podklucze rejestru, które są wspólne dla wszystkich wtyczek kontroli źródła w HKEY_LOCAL_MACHINE\SOFTWARE\SourceCodeControlProvider; usuń tylko określony podklucz SCC.

Jak środowisko IDE wykrywa obsługę wersji 1.2/1.3

Jak program Visual Studio wykrywa, czy wtyczka obsługuje interfejs API kontroli kodu źródłowego w wersji 1.2 i 1.3? Aby zadeklarować zaawansowane możliwości, wtyczka kontroli źródła musi zaimplementować odpowiednią funkcję:

Najpierw program Visual Studio sprawdza zwracaną wartość, wywołując element SccGetVersion. Musi być większy lub równy 1,2.

Następnie program Visual Studio określa, czy konkretna nowa funkcja jest obsługiwana, sprawdzając lpSccCaps argument w SccInitialize.

Jeśli oba te warunki zostaną spełnione, można wywołać nowe funkcje obsługiwane w wersjach 1.2 i 1.3.