0

如果我有 Shelveset 的名称和所有者,我可以使用以下代码成功找到它:

 foreach (Shelveset shelveset in
     versionControlServer.QueryShelvesets(workItem.
         Fields["Associated Context"].Value.ToString(), "NW\\LFreeman")) 

哪里workItem是 a 的一个实例CodeReviewRequest workItem

我可以得到CodeReviewRequest来自的名字workItem.Fields["Associated Context"]

如果我将所有者设置null为这样,它会返回一个空列表。有人向我报告,此方法仅在将所有者指定为字符串时才有效。

我正在想办法得到主人。

使用workItem.Fields["Associated Context Owner"].Value.ToString(),我可以获得所有者的 GUID。

现在的挑战是如何将 GUID 转换为预期的所有者,即“NW\LFreeman”。

当我打印出 时workItems.Fields["Associated Context Owner"].Value.ToString(),这就是我所看到的:

c3741a78-1a44-4bf6-95b0-f360cd387f3e

是否可以从此 GUID 检索“NW\LFreeman”?如果是这样,什么方法调用将使我能够进行此映射?


编辑:

这是根据给出的答案和链接为我工作的代码:

Guid ownerId = new Guid(codeReviewRequestWorkItem.Fields["Associated Context Owner"].Value.ToString());

Guid[] teamFoundationIds = new Guid[1];
teamFoundationIds[0] = ownerId;

TeamFoundationIdentity[] users = ims.ReadIdentities((Guid[])teamFoundationIds, MembershipQuery.None);

Shelveset[] shelves = vcs.QueryShelvesets(codeReviewRequestWorkItem.Fields["Associated Context"].Value.ToString(), users[0].UniqueName.ToString());
4

1 回答 1

1

IIdentityManagementService.ReadIdentities就是你要找的。

于 2017-03-29T07:42:13.663 回答