如何使用CodeReviewRequest提供的信息查找Shelveset

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

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

其中workItemCodeReviewRequest workItem一个实例。

我可以从workItem.Fields["Associated Context"]获取CodeReviewRequest的名称

如果我将所有者设置为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()); 

IIdentityManagementService.ReadIdentities是您正在寻找的。