C# 如何使用IdentityManagementService将Tfs工作项分配到电子邮件地址,同时对多个工作项具有相同的DisplayName值?
您好,我正在使用以下代码获取工作项的AssignedTo字段集合的电子邮件地址。我这里的问题是,有太多工作项的AssignedTo字段值包含相同的DisplayName值。这就是为什么我出现错误的原因 “找到多个与“xxxxxx”匹配的标识。请指定以下标识之一” 请告诉我如何消除这个错误C# 如何使用IdentityManagementService将Tfs工作项分配到电子邮件地址,同时对多个工作项具有相同的DisplayName值?,c#,tfs,C#,Tfs,您好,我正在使用以下代码获取工作项的AssignedTo字段集合的电子邮件地址。我这里的问题是,有太多工作项的AssignedTo字段值包含相同的DisplayName值。这就是为什么我出现错误的原因 “找到多个与“xxxxxx”匹配的标识。请指定以下标识之一” 请告诉我如何消除这个错误 TfsTeamProjectCollection projCollection = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(tf
TfsTeamProjectCollection projCollection = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(tfsUri);
IIdentityManagementService ims = projCollection.GetService<IIdentityManagementService>();
WorkItemStore WIS = (WorkItemStore)projCollection.GetService(typeof(WorkItemStore));
WorkItemCollection WIC = WIS.Query(workItemQuery);
foreach (WorkItem wi in WIC)
{
var workItemIdentity = ims.ReadIdentity(IdentitySearchFactor.DisplayName,(wi.Fields[CoreField.AssignedTo].OriginalValue).ToString(), MembershipQuery.Direct, ReadIdentityOptions.ExtendedProperties);
}
tfstreamprojectcollection projCollection=tfstreamprojectcollectionfactory.GetTeamProjectCollection(tfsUri);
IIdentialManagementService ims=projCollection.GetService();
WorkItemStore WIS=(WorkItemStore)projCollection.GetService(typeof(WorkItemStore));
WorkItemCollection WIC=WIS.Query(workItemQuery);
foreach(WIC中的工作项目wi)
{
var workItemIdentity=ims.ReadIdentity(IdentitySearchFactor.DisplayName,(wi.Fields[CoreField.AssignedTo].OriginalValue).ToString(),MembershipQuery.Direct,ReadIdentityOptions.ExtendedProperties);
}
如果捕获到“MultipleIdentitiesFoundException”异常,则该变量将为您提供选择唯一标识的选项
catch(MultipleIdentitiesFoundException ex){var workItemIdentity = ex.MatchingIdentities[0].UniqueName;}
这只是一个解决办法。在那一刻,哪一个是有效的身份并不难。但是,如果相同的使用在两个不同的域中有电子邮件地址,则通常会发生这种情况。
希望能有帮助