是否可以获取项目集合中所有工作项类型的列表?

A B*_*A B 2 c# collections tfs-sdk

我想获得的所有名单workitem types,从project collection没有访问projectproject collection.

我一直试着到现在

我可以workitemType使用project对象获取所有列表的列表,如下面的代码所示:

 TfsTeamProjectCollection tfctc = new TfsTeamProjectCollection(newUri
            ("http://servername:8080/tfs/teamprojectcollection"));
 WorkItemStore wis = tfctc.GetService<WorkItemStore>();

 foreach(Project project in wis.Projects)
 {               
   foreach (WorkItemType type in project.WorkItemTypes)
   {
     Console.WriteLine(type.Name);
   }
 }
Run Code Online (Sandbox Code Playgroud)

通过搜索获取​​列表,WorkitemType我来了解TFS中的一个类作为WorkItemTypeCollection.

但在使用它时,我无法获得workitemcollection使用的对象projectCollection.

我试过下面的代码来做到这一点:

 TfsTeamProjectCollection tfctc = new TfsTeamProjectCollection(newUri
            ("http://servername:8080/tfs/teamprojectcollection"));
 WorkItemTypeCollection witc = tfctc.GetService<WorkItemTypeCollection>(); // here I am getting nil object every time
// some more code          
Run Code Online (Sandbox Code Playgroud)

我想做的事

我想要得到的名单WorkItemTypesprojectcollection.

谁可以帮我这个事?如果我错了,请纠正我.提前致谢.

Fra*_*ank 5

工作项类型与团队项目相关联,因此您只能获取团队项目的工作项类型.这背后的原因是每个团队项目可以有不同的工作项类型集.即使您发现同名的多个类型,例如"任务"或"错误",每个团队项目也可能已修改其定义.基本上,所有团队项目的组合工作项类型都是团队项目集的工作项类型.

WorkItemTypeCollection您找到的类实际上是WorkItemType实例的容器.Project.WorkItemTypes您已使用的属性将返回WorkItemTypeCollection您可以迭代的属性.但是,此类型未注册为服务 - 这就是tfctc.GetService<WorkItemTypeCollection>()返回null 的原因.

那么,你foreach在示例中嵌套所做的实际上是它的工作原理.您可以使用LINQ来改进它SelectMany,但就是这样:

var workItemTypes = wis.Projects
                       .Cast<Project>()
                       .SelectMany(p => p.WorkItemTypes.Cast<WorkItemType>())
                       .ToArray();
Run Code Online (Sandbox Code Playgroud)