TFS 2012中的个人资料图片

Luk*_*asz 5 tfs tfs2012

有没有办法以管理员身份更改用户个人资料图像.在我们公司,我们有一个中央存储库,包含我们想要在TFS Web Portal上用于其配置文件的每个人的图像.我知道每个人都可以单独做到,但可以在全球范围内为每个人完成吗?

jes*_*ing 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();
Run Code Online (Sandbox Code Playgroud)

更新身份的代码:

    private static void UpdateIdentity()
    {
        try
        {
            _service.UpdateExtendedProperties(_identity);
            _service.RefreshIdentity(_identity.Descriptor);
        }
        catch (PropertyServiceException)
        {
            //swallow;
        }
    }
Run Code Online (Sandbox Code Playgroud)

用于检索身份服务和身份的代码:

        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);
Run Code Online (Sandbox Code Playgroud)