如何以编程方式 link 提交到 TFS 中的工作项? (需要 LinkedArtifactURI 中的第二个 GUID)

How can I programmatically link a commit to a work item in TFS? (need second GUID in LinkedArtifactURI)

我正在尝试以编程方式 link 提交到 TFS 中的工作项,我想我已经接近了。创建新的 ExternalLink 时,我正在努力形成 LinkedArtifactUri 属性。我可以 运行 一个简单的工作项查询来查看这个 属性 应该像下面这样:

"vstfs:///Git/Commit/ef43137b-a906-47b1-8dd4-0438b26c20c4%2fd211ee62-075d-4419-9d0b-cb58b76ae9dd%2fedfe1d438a77c2a95afa30e625f5dabe2656dea0"

所以我着手确定此字符串中的 GUID 来自何处,我能够找出前两个,但目前对最后一个感到困惑。第一个 GUID 是项目 ID(可以通过 _store.Value.Projects[TEAM_NAME].guid 之类的操作检索)。第二个是 Git Repo ID。有人可以告诉我第三个 GUID 是什么吗?

这是我的代码,如果我能弄清楚从哪里获得最后一个 GUID,它应该可以工作:

var item = _store.Value.GetWorkItem(165464); //work item id #
var gitRepoService = _projectCollection.GetService<GitRepositoryService>();
var gitProjectRepoService = gitRepoService.QueryRepositories("TEAM_NAME");
var defaultGitRepo = gitProjectRepoService.Single(gr => 
gr.Name.Equals("REPO_NAME"));

var gitGuid = defaultGitRepo.Id;

var proj = _store.Value.Projects["TEAM_NAME"];
var id = proj.Guid;

var linkToAdd = new ExternalLink(_store.Value.RegisteredLinkTypes[ArtifactLinkIds.Commit], $"vstfs:///Git/Commit/{id}%{gitGuid}%{Where_does_this_guid_come_from}");
item.Links.Add(linkToAdd);
item.Save();    

非常感谢您抽出宝贵时间。如果我不清楚或者您需要我提供任何其他信息,请告诉我。

第三个 GUID 应该是 提交 ID,它是完整的提交 ID。您可以通过 REST API

获取

要link提交一个工作项,您可以参考这个有用的article,它有详细的步骤和代码示例供您参考。