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>”添加到其中。 调用方必须准备好接受对 lpUser
和 lpSubProjPath
的 lpAuxProjPath
更改。 然后,在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 中已简化向源代码管理添加解决方案和项目,以最大程度地减少系统提示用户选择位置的次数。 如果源代码管理插件支持这两个新函数, SccCreateSubProject
则 SccGetParentProjectPath
Visual 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 的早期版本一样。