SccCreateSubProject 函数

此函数在参数指定的 lpParentProjPath 现有父项目下创建具有给定名称的子项目。

语法

SCCRTN SccCreateSubProject(
   LPVOID pContext,
   HWND   hWnd,
   LPSTR  lpUser,
   LPCSTR lpParentProjPath,
   LPCSTR lpSubProjName,
   LPSTR  lpAuxProjPath,
   LPSTR  lpSubProjPath
);

参数

pContext

[in]源代码管理插件上下文指针。

hWnd

[in]源代码管理插件可以作为其提供的任何对话框的父级的 IDE 窗口的句柄。

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
非特定故障。

注解

如果名称已存在子项目,该函数可以更改默认名称以创建唯一名称,例如,将“_<number>”添加到其中。 调用方必须准备好接受对 lpUserlpSubProjPathlpAuxProjPath更改。 然后,在lpSubProjPath调用 SccOpenProject 时使用该参数和lpAuxProjPath参数。 返回时,调用方不应修改它们。 这些字符串为源代码管理插件提供了一种方法,用于跟踪与项目关联的信息。 调用方 IDE 在返回时不会显示这两个参数,因为插件可以使用可能不适合查看的格式字符串。 该函数返回成功或失败代码,如果成功,则使用新项目的完整项目路径填充变量 lpSubProjPath

此函数类似于 SccGetProjPath,只是它以无提示方式创建项目,而不是提示用户选择一个项目。 SccCreateSubProject调用函数时, lpParentProjName lpAuxProjPath不会为空,并且将对应于有效的项目。 这些字符串通常由 IDE 从对函数或 SccGetParentProjectPath 的上一次调用SccGetProjPath接收。

参数 lpUser 是用户名。 IDE 将传入以前从 SccGetProjPath中接收的同一用户名,源代码管理插件应使用名称作为默认值。 如果用户已与插件建立开放连接,则该插件应尝试消除任何提示,以确保函数以无提示方式工作。 但是,如果登录失败,插件应提示用户输入登录名,并在收到有效的登录名时将名称传回 lpUser。 由于插件可能会更改此字符串,IDE 将始终分配大小缓冲区(SCC_USER_LEN+1 或SCC_USER_SIZE,其中包括 null 终止符的空间)。 如果字符串已更改,则新字符串必须是有效的登录名(至少与旧字符串一样有效)。

SccCreateSubProject 和 SccGetParentProjectPath 的技术说明

在 Visual Studio 中已简化向源代码管理添加解决方案和项目,以最大程度地减少系统提示用户选择位置的次数。 如果源代码管理插件支持这两个新函数, SccCreateSubProjectSccGetParentProjectPathVisual Studio 会激活这些更改。 但是,以下注册表项可用于禁用这些更改,并还原到以前的 Visual Studio(源代码管理插件 API 版本 1.1)行为:

[HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\8.0\SourceControl]“DoNotCreateSolutionRootFolderInSourceControl”=dword:00000001

如果此注册表项不存在或设置为 dword:00000000,Visual Studio 将尝试使用新函数, SccCreateSubProject 并且 SccGetParentProjectPath

如果注册表项设置为 dword:00000001,Visual Studio 不会尝试使用这些新函数,并且添加到源代码管理的操作的工作方式与 Visual Studio 的早期版本一样。

另请参阅