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

时间:2017-07-20 22:29:16

标签: c# git tfs git-commit tfs-workitem

我正在尝试以编程方式将提交链接到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();    

非常感谢你的时间。如果我不清楚或者您是否还需要我的任何其他信息,请告诉我。

1 个答案:

答案 0 :(得分:1)

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

获取

要将提交链接到工作项,您可以参考这个有用的article,它包含详细步骤和代码示例供您参考。