SccGetParentProjectPath 函数
此函数确定指定项目的父项目路径。 当用户将 Visual Studio 项目添加到源代码管理时,将调用此函数。
语法
SCCRTN SccGetParentProjectPath(
LPVOID pContext,
HWND hWnd,
LPSTR lpUser,
LPCSTR lpProjPath,
LPSTR lpAuxProjPath,
LPSTR lpParentProjPath
);
参数
pContext
[in]源代码管理插件上下文指针。
hWnd
[in]源代码管理插件可以作为其提供的任何对话框的父级的 IDE 窗口的句柄。
lpUser
[in, out]用户名(最多SCC_USER_SIZE,包括 NULL 终止符)。
lpProjPath
[in]标识项目路径的字符串(最多SCC_PRJPATH_SIZE,包括 NULL 终止符)。
lpAuxProjPath
[in, out]标识项目的辅助字符串(最多SCC_PRJPATH_SIZE,包括 NULL 终止符)。
lpParentProjPath
[in, out]标识父项目路径的输出字符串(最多SCC_PRJPATH_SIZE,包括 NULL 终止符)。
返回值
此函数的源代码管理插件实现应返回以下值之一:
值 | 说明 |
---|---|
SCC_OK | 已成功获取父项目路径。 |
SCC_E_INITIALIZEFAILED | 无法初始化 Project。 |
SCC_E_INVALIDUSER | 用户无法登录到源代码管理插件。 |
SCC_E_UNKNOWNPROJECT | 源代码管理插件未知项目。 |
SCC_E_INVALIDFILEPATH | 无效或不可用的文件路径。 |
SCC_E_NOTAUTHORIZED | 不允许用户执行此操作。 |
SCC_E_ACCESSFAILURE | 访问源代码管理系统时出现问题,可能是因为网络或争用问题。 建议重试。 |
SCC_E_PROJSYNTAXERR | 项目语法无效。 |
SCC_E_CONNECTIONFAILURE | 存储连接问题。 |
SCC_E_NONSPECIFICERROR SCC_E_UNKNOWNERROR |
非特定故障。 |
注解
此函数返回成功或失败代码,如果成功,则使用指定项目的完整项目路径填充变量 lpParentProjPath
。
此函数返回现有项目的父项目路径。 对于根项目,该函数返回传入的项目路径(即同一根项目路径)。 请注意,项目路径是仅对源代码管理插件有意义的字符串。
IDE 也准备接受对 lpUser
参数的 lpAuxProjPath
更改。 当用户将来打开此项目时,IDE 将保留这些字符串并将其传递给 SccOpenProject 。 因此,这些字符串为源代码管理插件提供了一种跟踪与项目关联的信息的方法。
此函数类似于 SccGetProjPath,只不过它不会提示用户选择项目。 它永远不会创建新项目,但仅适用于现有项目。
调用时间 SccGetParentProjectPath
, lpProjPath
并且 lpAuxProjPath
不会为空,并且将对应于有效的项目。 这些字符串通常由 IDE 从对函数的上一次调用 SccGetProjPath
接收。
参数 lpUser
是用户名。 IDE 将传入以前从 SccGetProjPath
函数收到的同一用户名,源代码管理插件应将名称用作默认值。 如果用户已与插件建立开放连接,则该插件应尝试消除任何提示,以确保函数以无提示方式工作。 但是,如果登录失败,插件应提示用户输入登录名,并在收到有效的登录名时将名称传回 lpUser
。 由于插件可能会更改此字符串,因此 IDE 将始终分配大小为 (SCC_USER_LEN
+1) 的缓冲区。 如果字符串已更改,则新字符串必须是有效的登录名(至少与旧字符串一样有效)。
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 的早期版本一样。