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,只不过它不会提示用户选择项目。 它永远不会创建新项目,但仅适用于现有项目。

调用时间 SccGetParentProjectPathlpProjPath 并且 lpAuxProjPath 不会为空,并且将对应于有效的项目。 这些字符串通常由 IDE 从对函数的上一次调用 SccGetProjPath 接收。

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

SccCreateSubProject 和 SccGetParentProjectPath 的技术说明

在 Visual Studio 中已简化向源代码管理添加解决方案和项目,以最大程度地减少系统提示用户选择位置的次数。 如果源代码管理插件支持这两个新函数、 SccCreateSubProjectSccGetParentProjectPath 函数,则 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 的早期版本一样。

另请参阅