如何使用C#更新TFS用户显示名称

我可以使用以下C#代码从TFS检索用户列表。但是,我想更改并保留用户的显示名称。这是我的代码。

using System;
using System.Collections.Generic;
using microsoft.TeamFoundation.Client;
using microsoft.TeamFoundation.Framework.Client;
using microsoft.TeamFoundation.Framework.Common;

namespace ConsoleApplication3
{
  class Program
  {
    static void Main(string[] args)
    {

        TfsConfigurationServer tcs = new TfsConfigurationServer(new Uri("http://tfsserver:8080/tfs"));

        IIdentityManagementService ims = tcs.GetService<IIdentityManagementService>();

        TeamFoundationIdentity tfi = ims.ReadIdentity(IdentitySearchFactor.accountName,"[TEAM FOUNDATION]\\Team Foundation Valid Users",MembershipQuery.Expanded,ReadIdentityOptions.None);

        TeamFoundationIdentity[] ids = ims.ReadIdentities(tfi.Members,MembershipQuery.None,ReadIdentityOptions.None);

        foreach (TeamFoundationIdentity id in ids)
        {
            if (id.Descriptor.IdentityType == "system.security.Principal.WindowsIdentity")
            {
                var displayName = id.DisplayName;

                // Now I would like to change this displayName and persist the change ??? 
            }
        }

        Console.ReadLine();
    }
  }
}

谢谢 鲁修

aaassdqw 回答:如何使用C#更新TFS用户显示名称

正如您所指出的,刚在IIdentityManagementService Interface中首次使用ReadIdentities,您可以看一下下面的代码片段,该代码片段将identity.DisplayName从Patrick Lu转换为Test User。

        var sec = _tfs.GetService<IGroupSecurityService>();
        var vcs = _tfs.GetService<VersionControlServer>();

        Identity[] appGroups = sec.ListApplicationGroups(vcs.GetTeamProject(_selectedTeamProject).ArtifactUri.AbsoluteUri);

        foreach (Identity group in appGroups)
        {
            Identity[] groupMembers = sec.ReadIdentities(SearchFactor.Sid,new string[] { group.Sid },QueryMembership.Expanded);

            foreach (Identity member in groupMembers)
            {
                if (member.Members != null)
                {
                    foreach (string memberSid in member.Members)
                    {
                        Identity memberInfo = sec.ReadIdentity(SearchFactor.Sid,memberSid,QueryMembership.Expanded);

                        if (memberInfo.DisplayName.ToUpper() == "Patrick Lu")
                        {
                            memberInfo.DisplayName = "Test User ";
                        }
                    }
                }
            }
        }

确保您具有足够的权限来执行此操作。

本文链接:https://www.f2er.com/3099597.html

大家都在问