Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在TFS WIQL项目的团队迭代中获得所有用户?_C#_Tfs_Tfs Workitem_Wiql - Fatal编程技术网

C# 如何在TFS WIQL项目的团队迭代中获得所有用户?

C# 如何在TFS WIQL项目的团队迭代中获得所有用户?,c#,tfs,tfs-workitem,wiql,C#,Tfs,Tfs Workitem,Wiql,我希望在一个项目中获得所有有迭代的用户。 假设“Precient”项目有9个不同的用户,有20个迭代,所以我希望项目中所有迭代都有不同的用户WIQL C#。这与问题有关。 但这并不能完全帮助我您可以通过RESTAPI或NETAPI获得。这是NetAPI的示例 您可以从“项目有效用户”组获取所有用户 您可以从项目根迭代中获得所有迭代 using Microsoft.TeamFoundation.Client; using Microsoft.TeamFoundation.Framework.Cl

我希望在一个项目中获得所有有迭代的用户。 假设“Precient”项目有9个不同的用户,有20个迭代,所以我希望项目中所有迭代都有不同的用户
WIQL C#
。这与问题有关。

但这并不能完全帮助我

您可以通过RESTAPI或NETAPI获得。这是NetAPI的示例

  • 您可以从“项目有效用户”组获取所有用户
  • 您可以从项目根迭代中获得所有迭代

    using Microsoft.TeamFoundation.Client;
    using Microsoft.TeamFoundation.Framework.Client;
    using Microsoft.TeamFoundation.Framework.Common;
    using Microsoft.TeamFoundation.Server;
    using Microsoft.TeamFoundation.WorkItemTracking.Client;
    using System;
    using System.Collections.Generic;
    
    namespace GetUserіAndItearions
    {
        class Program
        {
            public class Iteration
            {
                public string Path;
                public DateTime DateFrom;
                public DateTime DateTo;
            }
    
            static void Main(string[] args)
            {
                string _teamProject = "Your_Project_Name";
    
                try
                {
                    TfsTeamProjectCollection _tpc = new TfsTeamProjectCollection(new Uri("http://your_server:8080/tfs/DefaultCollection"));
    
                    GetAllUsers(_tpc, _teamProject);
                    GetAllIterations(_tpc, _teamProject);
    
                }
                catch (Exception ex)
                {
                    Console.WriteLine("Error: " + ex.Message);
                    Console.WriteLine(ex.StackTrace);
                }
            }
    
            private static void GetAllIterations(TfsTeamProjectCollection pTpc, string pProjectName)
            {
                List<Iteration> _its = new List<Iteration>();
                WorkItemStore _wistore = pTpc.GetService<WorkItemStore>();
    
                var _css = pTpc.GetService<ICommonStructureService4>();
    
    
                foreach (Node _node in _wistore.Projects[pProjectName].IterationRootNodes)
                    FillIterations(_css, _node, _its);
    
    
                Console.WriteLine("Iterations:");
                foreach (Iteration _it in _its) Console.WriteLine("{0}:{1}-{2}", _it.Path, 
                    (_it.DateFrom == DateTime.MinValue) ? "0" : _it.DateFrom.ToShortDateString(), (_it.DateTo== DateTime.MinValue) ? "0" : _it.DateTo.ToShortDateString());
            }
    
            private static void FillIterations(ICommonStructureService4 pCss, Node pNode, List<Iteration> pIts)
            {
                var _nodeInfo = pCss.GetNode(pNode.Uri.AbsoluteUri);
    
                pIts.Add(new Iteration { Path = _nodeInfo.Path,
                    DateFrom = (_nodeInfo.StartDate == null) ? DateTime.MinValue : (DateTime)_nodeInfo.StartDate,
                    DateTo = (_nodeInfo.FinishDate == null) ? DateTime.MinValue : (DateTime)_nodeInfo.FinishDate });
    
                if (pNode.HasChildNodes)
                    foreach (Node _node in pNode.ChildNodes)
                        FillIterations(pCss, _node, pIts);
            }
    
            private static void GetAllUsers(TfsTeamProjectCollection pTpc, string pProjectName)
            {
                List<string> listUsers = new List<string>();
    
                WorkItemStore _wistore = pTpc.GetService<WorkItemStore>();
                var _gss = pTpc.GetService<IIdentityManagementService>();
    
                var _teamProject = _wistore.Projects[pProjectName];
                string _validGroupName = "[" + pProjectName + "]\\Project Valid Users";
    
                TeamFoundationIdentity _group = _gss.ReadIdentity(IdentitySearchFactor.DisplayName, _validGroupName, MembershipQuery.Expanded, ReadIdentityOptions.ExtendedProperties);
    
                List<string> _memebersIds = new List<string>();
                foreach (var _member in _group.Members) _memebersIds.Add(_member.Identifier);
    
                var _members = _gss.ReadIdentities(IdentitySearchFactor.Identifier, _memebersIds.ToArray(), MembershipQuery.Expanded, ReadIdentityOptions.ExtendedProperties);
    
                foreach (var _member in _members) if (!_member[0].IsContainer) listUsers.Add(_member[0].DisplayName);
    
                Console.WriteLine("Users:");
                foreach (var _user in listUsers) Console.WriteLine("{0}", _user);
            }
    
        }
    }
    
    使用Microsoft.TeamFoundation.Client;
    使用Microsoft.TeamFoundation.Framework.Client;
    使用Microsoft.TeamFoundation.Framework.Common;
    使用Microsoft.TeamFoundation.Server;
    使用Microsoft.TeamFoundation.WorkItemTracking.Client;
    使用制度;
    使用System.Collections.Generic;
    名称空间GetUserіAndItearions
    {
    班级计划
    {
    公共类迭代
    {
    公共字符串路径;
    公共DateTime DateFrom;
    公共日期时间日期到;
    }
    静态void Main(字符串[]参数)
    {
    string\u teamProject=“您的项目名称”;
    尝试
    {
    TfsatmProjectCollection\u tpc=新TfsatmProjectCollection(新Uri(“http://your_server:8080/tfs/DefaultCollection"));
    GetAllUsers(_tpc,_teamProject);
    获取头韵(_tpc,_teamProject);
    }
    捕获(例外情况除外)
    {
    Console.WriteLine(“错误:+ex.Message”);
    控制台写入线(例如StackTrace);
    }
    }
    私有静态void GetAllIterations(TfsTeamProjectCollection pTpc,字符串pProjectName)
    {
    列表_its=新列表();
    WorkItemStore_wistore=pTpc.GetService();
    var_css=pTpc.GetService();
    foreach(节点_wistore.Projects[pProjectName].IterationRootNodes中的节点)
    FillIterations(_css,_节点,_its);
    Console.WriteLine(“迭代:”);
    foreach(迭代_itin _its)Console.WriteLine(“{0}:{1}-{2}”,_it.Path,
    (_it.DateFrom==DateTime.MinValue)?“0:_it.DateFrom.ToShortDateString(),(_it.DateTo==DateTime.MinValue)?“0:_it.DateTo.ToShortDateString());
    }
    私有静态无效填充迭代(ICommonStructureService4 pCss、节点pNode、列表)
    {
    var_nodeInfo=pCss.GetNode(pNode.Uri.AbsoluteUri);
    Add(新迭代{Path=_nodeInfo.Path,
    DateFrom=(\u nodeInfo.StartDate==null)?DateTime.MinValue:(DateTime)\u nodeInfo.StartDate,
    DateTo=(\u nodeInfo.FinishDate==null)?DateTime.MinValue:(DateTime)\u nodeInfo.FinishDate});
    if(pNode.HasChildNodes)
    foreach(pNode.ChildNodes中的节点_Node)
    填充迭代(PCS、节点、凹坑);
    }
    私有静态void GetAllUsers(TfsTeamProjectCollection pTpc,字符串pProjectName)
    {
    List listUsers=新列表();
    WorkItemStore_wistore=pTpc.GetService();
    var_gss=pTpc.GetService();
    var\u teamProject=\u wistore.Projects[pProjectName];
    字符串_validGroupName=“[”+pProjectName+“]\\项目有效用户”;
    TeamFoundationIdentity _group=_gss.ReadIdentity(IdentitySearchFactor.DisplayName、_validGroupName、MembershipQuery.Expanded、ReadIdentityOptions.ExtendedProperties);
    列表_memebersIds=新列表();
    foreach(var _group.Members中的成员)_memebersIds.Add(_member.Identifier);
    var_members=_gss.readIdentifications(IdentitySearchFactor.Identifier,_memebersIds.ToArray(),MembershipQuery.extended,ReadIdentityOptions.ExtendedProperties);
    如果(!\u成员[0].IsContainer)listUsers.Add(\u成员[0].DisplayName),则foreach(var\u成员位于\u成员中);
    Console.WriteLine(“用户:”);
    foreach(listUsers中的var_user)Console.WriteLine(“{0}”,u user);
    }
    }
    }
    

  • 它无法通过WIQL从团队获取用户。WIQL是一种工作项查询语言,用于查询bug、任务和其他类型的工作项。返回值应为工作项

    您需要使用api作为@Shamray来检索用户。下面的博客也提供了一个例子:


    我有没有办法不用PAT(令牌)使用rest api?我正在使用TFS 2015!!请编写C#代码,通过REST api连接TFS,并获取项目的所有用户和迭代。您可以在api中使用windows凭据进行基本身份验证。您应该参考的RESTAPI。关于如何在C#代码中使用REST api,请参考此网站:请提供您尝试过的代码,并准确解释哪些代码没有按预期工作。需要您的帮助吗