使用.net API获取Tfs用户时区

时间:2018-04-23 10:37:50

标签: tfs

我正面临着TFS的问题 我试图按日期范围提取提交(Id范围对我不起作用,因为它返回按字母顺序排序的修订版,而不是基于创建时间。所以我从未在指定范围内获得修订。)

GitCommitRef.Committer.Date以UTF格式返回
但是GitQueryCommitsCriteria.FromDate要求用户在UserProfile->Locale->TimeZone中设置的格式为日期 寻找.Net api来提取这个值。我知道下面的REST api(虽然无法找到它的等效.net api),但它并没有为我提供其他用户的时区价值。 http://tfsemea1.ta.philips.com:8080/tfs/TPC_Region13//_api/_common/GetUserProfile?__v=5
如何获得任何用户的时区价值?

或者我如何使ID范围工作?

1 个答案:

答案 0 :(得分:0)

根据我的测试,我找不到具有.net API的有效用户的Time Zone属性。

您可以使用以下示例代码获取用户列表(很遗憾找不到用户的时区):

注意:您需要安装Microsoft.TeamFoundationServer.ExtendedClient Nuget包。

using System;
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://server: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")

                { Console.WriteLine(id.DisplayName); }
                { Console.WriteLine(id.UniqueName); }

            }

            Console.ReadLine();

        }
    }
}

目前还没有这样的REST API来获取所有用户及其个人资料。

我们只能使用REST API获取当前的登录用户配置文件。因此,作为一种解决方法,您可以要求所有用户检查并将时区备份给您。

不知道ID范围。