【问题标题】:How to get user AccountName for WorkItem from TeamFoundation?如何从 Team Foundation 获取工作项的用户帐户名称?
【发布时间】:2017-11-27 06:54:37
【问题描述】:

我正在使用此代码从 TFS 获取 WorkItems:

private static List<WorkItem> GetTfsWorkItems(string projectName)
{
    Uri URI = new Uri("...", UriKind.Absolute);
    TfsTeamProjectCollection tpc = new TfsTeamProjectCollection(URI);
    WorkItemStore store = new WorkItemStore(tpc);
    string query = $@"SELECT *
                      FROM WorkItems
                      WHERE [System.TeamProject] = '{projectName}'";
    return store.Query(query).Cast<WorkItem>().ToList();
}

WorkItem 具有字段“CreatedBy”和“ChangedBy”,这两个字段都是带有用户 DisplayName 的字符串。 我正在寻找获取用户的 AccountName(或 Sid)而不是它的方法。提前致谢!

【问题讨论】:

    标签: c# tfs tfs-workitem workitem


    【解决方案1】:

    无法直接获取 AccountName。具有用户名值的字段(如 CreatedBy/ChangedBy 字段)存储在 TFS 数据库中作为对身份的引用,而不仅仅是作为显示名称。

    但不支持按显示名称查询帐户列表。作为一种解决方法,您必须深入了解帐户列表并将显示名称与身份匹配。该身份具有您的 AccountName。

    TeamFoundationIdentity 的帮助下,你可以得到你需要的东西。看看下面的教程有更多的细节:

    【讨论】:

    • 感谢您的回答!不支持按显示名称查询帐户列表,因为它不安全:可能有两个用户具有相同的显示名称。我采纳了您的建议,但我仍在寻找 WorkItem 的字段与 TeamFoundationIdentities 之间的直接链接。
    • @I.Dukhin 你现在不希望它成为 TFS 设计的一部分。你也可以在 TFS 数据库中挖掘它,这可能会奏效。看看这个教程——How to query Work Items using SQL on the Relational Warehouse。您也可以添加uservocie,TFS PM 将很乐意审核您的建议。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-12
    • 2020-05-17
    • 1970-01-01
    • 2016-06-10
    • 2015-05-06
    • 1970-01-01
    相关资源
    最近更新 更多