Функция SccCreateSubProject
Эта функция создает подпроект с заданным именем в существующем родительском проекте, указанном аргументом lpParentProjPath
.
Синтаксис
SCCRTN SccCreateSubProject(
LPVOID pContext,
HWND hWnd,
LPSTR lpUser,
LPCSTR lpParentProjPath,
LPCSTR lpSubProjName,
LPSTR lpAuxProjPath,
LPSTR lpSubProjPath
);
Параметры
pContext
[in] Указатель контекста подключаемого модуля управления версиями.
hWnd
[in] Дескриптор окна интегрированной среды разработки, который подключаемый модуль управления версиями может использовать в качестве родительского элемента для любых диалоговых окон, которые он предоставляет.
lpUser
[in, out] Имя пользователя (до SCC_USER_SIZE, включая конечный элемент NULL).
lpParentProjPath
[in] Строка, определяющая путь родительского проекта (до SCC_PRJPATH_SIZE, включая терминатор NULL).
lpSubProjName
[in] Предлагаемое подпроектное имя (до SCC_PRJPATH_SIZE, включая терминатор NULL).
lpAuxProjPath
[in, out] Вспомогательная строка, определяющая проект (до SCC_PRJPATH_SIZE, включая терминатор NULL).
lpSubProjPath
[in, out] Строка вывода, определяющая путь для подпроекта (до SCC_PRJPATH_SIZE, включая терминатор NULL).
Возвращаемое значение
Реализация подключаемого модуля управления версиями этой функции должна возвращать одно из следующих значений:
значение | Описание |
---|---|
SCC_OK | Подпроект был успешно создан. |
SCC_E_INITIALIZEFAILED | Не удалось инициализировать родительский проект. |
SCC_E_INVALIDUSER | Пользователь не мог войти в систему системы управления версиями. |
SCC_E_COULDNOTCREATEPROJECT | Не удается создать вложенный проект. |
SCC_E_PROJSYNTAXERR | Недопустимый синтаксис проекта. |
SCC_E_UNKNOWNPROJECT | Родительский проект неизвестен подключаемым модулем управления версиями. |
SCC_E_INVALIDFILEPATH | Недопустимый или непригодный путь к файлу. |
SCC_E_NOTAUTHORIZED | Пользователю не разрешено выполнять эту операцию. |
SCC_E_ACCESSFAILURE | Возникла проблема с доступом к системе управления версиями, вероятно, из-за проблем с сетью или спором. Рекомендуется повторить попытку. |
SCC_E_CONNECTIONFAILURE | Возникла проблема с подключением подключаемого модуля управления версиями. |
SCC_E_NONSPECIFICERROR SCC_E_UNKNOWNERROR |
Неспецифический сбой. |
Замечания
Если подпроект с именем уже существует, функция может изменить имя по умолчанию, чтобы создать уникальное, например путем добавления "_<число>" в него. Вызывающий объект должен быть готов принять изменения lpUser
в , lpSubProjPath
и lpAuxProjPath
. lpAuxProjPath
Затем lpSubProjPath
аргументы используются в вызове SccOpenProject. Они не должны изменяться вызывающей стороной по возвращении. Эти строки позволяют подключаемым модулем управления версиями отслеживать сведения, которые необходимо связать с проектом. Интегрированная среда разработки вызывающего средства не будет отображать эти два параметра при возврате, так как подключаемый модуль может использовать форматированную строку, которая может не подходить для просмотра. Функция возвращает код успешного выполнения или сбоя, а при успешном выполнении заполняет переменную lpSubProjPath
полным путем проекта к новому проекту.
Эта функция похожа на SccGetProjPath, за исключением того, что она автоматически создает проект, а не запрашивает пользователю выбрать его. SccCreateSubProject
При вызове lpParentProjName
функции и lpAuxProjPath
не будет пустой и будет соответствовать допустимому проекту. Эти строки обычно получаются интегрированной среде разработки из предыдущего вызова SccGetProjPath
функции или SccGetParentProjectPath.
Аргументом lpUser
является имя пользователя. Интегрированная среда разработки будет передавать имя пользователя, полученное ранее, SccGetProjPath
и подключаемый модуль управления версиями должен использовать имя в качестве значения по умолчанию. Если у пользователя уже есть открытое подключение с подключаемым модулем, подключаемый модуль должен попытаться устранить любые запросы, чтобы убедиться, что функция работает автоматически. Однако если вход завершается ошибкой, подключаемый модуль должен запрашивать имя для входа и, когда он получает допустимое имя входа, передайте имя обратно.lpUser
Так как подключаемый модуль может изменить эту строку, интегрированная среда разработки всегда выделяет буфер размера (SCC_USER_LEN+1 или SCC_USER_SIZE, который включает пространство для конца null). Если строка изменена, новая строка должна быть допустимым именем входа (по крайней мере так же, как старая строка).
Технические заметки для SccCreateSubProject и SccGetParentProjectPath
Добавление решений и проектов в систему управления версиями было упрощено в Visual Studio, чтобы свести к минимуму количество запросов пользователя на выбор расположений в системе управления версиями. Эти изменения активируются Visual Studio, если подключаемый модуль управления версиями поддерживает как новые функции, SccCreateSubProject
так и SccGetParentProjectPath
. Однако следующая запись реестра может использоваться для отключения этих изменений и возврата к предыдущему поведению Visual Studio (подключаемый модуль управления версиями 1.1).
[HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\8.0\SourceControl] "DoNotCreateSolutionRootFolderInSourceControl"=dword:00000001
Если эта запись реестра не существует или имеет значение dword:000000000, Visual Studio пытается использовать новые функции SccCreateSubProject
и SccGetParentProjectPath
.
Если для записи реестра задано значение dword:00000001, Visual Studio не пытается использовать эти новые функции и операции добавления в систему управления версиями, как это было в предыдущих версиях Visual Studio.