c# - 如何使用 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();
}
}
}
谢谢鲁修
解决方案
ReadIdentities
正如您在IIdentityManagementService 接口中首次使用所指出的那样,您可以查看下面的代码片段,它将 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 ";
}
}
}
}
}
确保您有足够的权限来执行此操作。
推荐阅读
- php - 如何使用 Symfony4 设置 HWIOAuthBundle?
- python - 如何将整列作为参数传递给 tldextract 函数?
- javascript - 使用html实体的Javascript替换()不起作用
- php - 避免由于未定义变量错误而导致重复变量
- xamarin - 如何将 Tapped 事件传递到 XAML 模板?
- c# - 如何在 asp.net core 2.1 中部署 secrets.json
- dynamics-crm - 统一客户端界面中的 Dynamics 365(9.0) - 如何在新建按钮和可编辑表单上方启用网格?
- unity3d - Visual Studio for Mac 统一执行失败
- reactjs - 操作必须是使用 Redux Thunk 的普通对象错误
- python - 如何在 Python 中对列表中的单词进行编码