有没有办法以管理员身份更改用户个人资料图像。在我们公司,我们有一个每个人的图像的中央存储库,我们希望在 TFS Web Portal 上将其用于他们的个人资料。我知道每个人都可以单独完成,但可以在全球范围内为每个人完成吗?
问问题
1523 次
1 回答
4
TL/DR
我已向ALM Rangers Team Tools 快速响应示例提交了一个补丁,该补丁为任何 TFS 管理员提供了个人资料图像功能。
细节
官方回答:没有。不在该平台的当前版本中,正在考虑将其用于未来版本。
真正的答案,可以通过 api 技巧来完成。但它仍然不受支持。我正在开发一个可以做到这一点的命令行工具。假期后我可能会分享它。如果您更早需要它,请打开 reflector.net 中的 webaccess dll,您将能够找到有问题的代码。
个人资料图像基本上是用户身份对象的扩展属性。
重要的几行是:
_identity.SetProperty("Microsoft.TeamFoundation.Identity.Image.Data", imageData); /* byte[] containing 90x90px png */
_identity.SetProperty("Microsoft.TeamFoundation.Identity.Image.Type", "image/png");
_identity.SetProperty("Microsoft.TeamFoundation.Identity.Image.Id", Guid.NewGuid().ToByteArray());
_identity.SetProperty("Microsoft.TeamFoundation.Identity.CandidateImage.Data", null);
_identity.SetProperty("Microsoft.TeamFoundation.Identity.CandidateImage.UploadDate", null);
UpdateIdentity();
更新身份的代码:
private static void UpdateIdentity()
{
try
{
_service.UpdateExtendedProperties(_identity);
_service.RefreshIdentity(_identity.Descriptor);
}
catch (PropertyServiceException)
{
//swallow;
}
}
检索身份服务和身份的代码:
var server = TfsConfigurationServerFactory.GetConfigurationServer(new Uri("http://localhost:8080/tfs"));
server.ClientCredentials = new TfsClientCredentials();
server.ClientCredentials = new TfsClientCredentials(new WindowsCredential(new NetworkCredential(connectUser, password)));
server.Authenticate();
_service = server.GetService<IIdentityManagementService2>();
var identities = _service.ReadIdentities(IdentitySearchFactor.AccountName,
new[] {userToSetImageOn}, MembershipQuery.None, ReadIdentityOptions.None);
于 2012-12-19T01:45:53.550 回答