SccCreateSubProject, funkcja
Ta funkcja tworzy podprojekt o podanej nazwie w istniejącym projekcie lpParentProjPath
nadrzędnym określonym przez argument .
Składnia
SCCRTN SccCreateSubProject(
LPVOID pContext,
HWND hWnd,
LPSTR lpUser,
LPCSTR lpParentProjPath,
LPCSTR lpSubProjName,
LPSTR lpAuxProjPath,
LPSTR lpSubProjPath
);
Parametry
pContext
[in] Wskaźnik kontekstu wtyczki kontroli źródła.
hWnd
[in] Dojście do okna środowiska IDE, którego wtyczka kontroli źródła może używać jako elementu nadrzędnego dla wszystkich okien dialogowych, które udostępnia.
lpUser
[in, out] Nazwa użytkownika (maksymalnie SCC_USER_SIZE, w tym terminator null).
lpParentProjPath
[in] Ciąg identyfikujący ścieżkę projektu nadrzędnego (do SCC_PRJPATH_SIZE, w tym terminator null).
lpSubProjName
[in] Sugerowana nazwa podprojektu (do SCC_PRJPATH_SIZE, w tym terminator NULL).
lpAuxProjPath
[in, out] Ciąg pomocniczy identyfikujący projekt (do SCC_PRJPATH_SIZE, w tym terminator NULL).
lpSubProjPath
[in, out] Ciąg wyjściowy identyfikujący ścieżkę podprojektu (do SCC_PRJPATH_SIZE, w tym terminator NULL).
Wartość zwracana
Implementacja wtyczki kontroli źródła tej funkcji powinna zwrócić jedną z następujących wartości:
Wartość | Opis |
---|---|
SCC_OK | Pomyślnie utworzono podprojekt. |
SCC_E_INITIALIZEFAILED | Nie można zainicjować projektu nadrzędnego. |
SCC_E_INVALIDUSER | Użytkownik nie mógł zalogować się do systemu kontroli źródła. |
SCC_E_COULDNOTCREATEPROJECT | Nie można utworzyć podprojektu. |
SCC_E_PROJSYNTAXERR | Nieprawidłowa składnia projektu. |
SCC_E_UNKNOWNPROJECT | Projekt nadrzędny jest nieznany wtyczki kontroli źródła. |
SCC_E_INVALIDFILEPATH | Nieprawidłowa lub bezużyteczna ścieżka pliku. |
SCC_E_NOTAUTHORIZED | Użytkownik nie może wykonać tej operacji. |
SCC_E_ACCESSFAILURE | Wystąpił problem podczas uzyskiwania dostępu do systemu kontroli źródła, prawdopodobnie z powodu problemów z siecią lub rywalizacją. Zalecane jest ponowienie próby. |
SCC_E_CONNECTIONFAILURE | Wystąpił problem z połączeniem wtyczki kontroli źródła. |
SCC_E_NONSPECIFICERROR SCC_E_UNKNOWNERROR |
Niepowodzeń nieokreślonych. |
Uwagi
Jeśli podprojekt o nazwie już istnieje, funkcja może zmienić domyślną nazwę, aby utworzyć unikatowy, na przykład dodając do niego ciąg "_<number>". Obiekt wywołujący musi być przygotowany do akceptowania zmian w elementach lpUser
, lpSubProjPath
i lpAuxProjPath
. lpSubProjPath
Argumenty i lpAuxProjPath
są następnie używane w wywołaniu elementu SccOpenProject. Nie powinny być modyfikowane przez obiekt wywołujący po powrocie. Te ciągi umożliwiają wtyczkę kontroli źródła w celu śledzenia informacji, które muszą być skojarzone z projektem. Środowisko IDE wywołującego nie wyświetli tych dwóch parametrów po powrocie, ponieważ wtyczka może używać sformatowanego ciągu, który może nie być odpowiedni do wyświetlania. Funkcja zwraca kod powodzenia lub błędu, a w razie powodzenia wypełnia zmienną lpSubProjPath
pełną ścieżką projektu do nowego projektu.
Ta funkcja jest podobna do ścieżki SccGetProjPath, z tą różnicą, że dyskretnie tworzy projekt, a nie monituje użytkownika o wybranie go. Gdy funkcja jest wywoływana SccCreateSubProject
i lpParentProjName
lpAuxProjPath
nie będzie pusta i będzie odpowiadać prawidłowemu projektowi. Te ciągi są zwykle odbierane przez środowisko IDE z poprzedniego wywołania SccGetProjPath
funkcji lub SccGetParentProjectPath.
Argumentem lpUser
jest nazwa użytkownika. Środowisko IDE przekaże tę samą nazwę użytkownika, która została wcześniej odebrana z SccGetProjPath
programu , a wtyczka kontroli źródła powinna używać nazwy jako domyślnej. Jeśli użytkownik ma już otwarte połączenie z wtyczką, wtyczka powinna spróbować wyeliminować wszelkie monity, aby upewnić się, że funkcja działa dyskretnie. Jeśli jednak logowanie nie powiedzie się, wtyczka powinna monitować użytkownika o zalogowanie się i po otrzymaniu prawidłowego identyfikatora logowania przekaż nazwę z powrotem w lpUser
pliku . Ponieważ wtyczka może zmienić ten ciąg, środowisko IDE zawsze przydzieli bufor o rozmiarze (SCC_USER_LEN+1 lub SCC_USER_SIZE, który zawiera miejsce na terminator o wartości null). Jeśli ciąg zostanie zmieniony, nowy ciąg musi być prawidłową nazwą logowania (co najmniej tak prawidłową jak stary ciąg).
Uwagi techniczne dotyczące obiektów SccCreateSubProject i SccGetParentProjectPath
Dodanie rozwiązań i projektów do kontroli źródła zostało uproszczone w programie Visual Studio, aby zminimalizować liczbę monitów użytkownika o wybranie lokalizacji w systemie kontroli źródła. Te zmiany są aktywowane przez program Visual Studio, jeśli wtyczka kontroli źródła obsługuje zarówno nowe funkcje, SccCreateSubProject
jak i SccGetParentProjectPath
. Można jednak użyć następującego wpisu rejestru, aby wyłączyć te zmiany i powrócić do poprzedniego zachowania wtyczki kontroli źródła interfejsu API w wersji 1.1:
[HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\8.0\SourceControl] "DoNotCreateSolutionRootFolderInSourceControl"=dword:00000001
Jeśli ten wpis rejestru nie istnieje lub jest ustawiony na dword:00000000, program Visual Studio próbuje użyć nowych funkcji SccCreateSubProject
i SccGetParentProjectPath
.
Jeśli wpis rejestru jest ustawiony na dword:00000001, program Visual Studio nie próbuje używać tych nowych funkcji, a operacje dodawania do kontroli źródła działają tak jak w poprzednich wersjach programu Visual Studio.