Próbuję napisać mały skrypt, aby ustawić wszystkie obrazy użytkowników na ich obrazie AD, zrobiłem kilka skoków w ILSpy i dowiedziałem się, co ustawić za pomocą serwera TFS API, jednak kod musi być nieco inny, ponieważ korzystam z interfejsu API klienta.Interfejs API do aktualizacji obrazu użytkownika - Identity Extended Properties nie zapisywanie
Kod, który mam poniżej, może pomyślnie przejść przez wszystkich użytkowników w tfs, wyszukać je w AD, pobrać miniaturę, ustawić właściwość na tożsamości TFS. Ale nie mogę, aby moje życie otrzymało rozszerzoną własność, by zapisać się z powrotem na TFS.
Kod nie jest wyjątkiem, ale właściwość nie jest ustawiona na wartość, którą ustawiłem podczas następnego uruchomienia aplikacji.
Czy ktoś wie, jak zapisać rozszerzone właściwości za pośrednictwem interfejsu klienta?
Microsoft.TeamFoundation.Client.TeamFoundationServer teamFoundationServer = new Microsoft.TeamFoundation.Client.TeamFoundationServer("{URL TO TFS}");
FilteredIdentityService service = teamFoundationServer.GetService<FilteredIdentityService>(); ;
IIdentityManagementService2 service2 = teamFoundationServer.GetService<IIdentityManagementService2>();
foreach (var identity in service.SearchForUsers(""))
{
var user = UserPrincipal.FindByIdentity(new PrincipalContext(ContextType.Domain), identity.UniqueName);
if (user == null) continue;
var de = new System.DirectoryServices.DirectoryEntry("LDAP://" + user.DistinguishedName);
var thumbNail = de.Properties["thumbnailPhoto"].Value as byte[];
identity.SetProperty("Microsoft.TeamFoundation.Identity.CandidateImage.Data", thumbNail);
identity.SetProperty("Microsoft.TeamFoundation.Identity.CandidateImage.UploadDate", DateTime.UtcNow);
service2.UpdateExtendedProperties(identity);
}