是否可以获取项目集合中所有工作项类型的列表?
Is it possible to get the list of all Workitem Types in a Project collection?
我正在尝试从 project collection
中获取所有 workitem types
的列表,而无需访问 project collection
中的 project
。
我已经试过了
我可以使用 project
对象获取所有 workitemType
列表的列表,如下代码所示:
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);
}
}
通过搜索 WorkitemType
的列表,我在 TFS 中知道一个 class 作为 WorkItemTypeCollection。
但是在使用它时我无法使用 projectCollection
.
获得 workitemcollection
的对象
我已尝试使用以下代码:
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
我想做什么
我想在 projectcollection
.
中获取 WorkItemTypes
的列表
谁能帮我解决这个问题?
如果我错了任何地方,请纠正我。
提前致谢。
工作项类型与团队项目相关联,因此您只能获取团队项目的工作项类型。这背后的原因是每个团队项目可以有不同的工作项类型集。即使您发现多个类型名称相同,例如"Task" 或 "Bug",每个团队项目可能已修改其定义。因此,从本质上讲,所有团队项目的组合工作项类型就是团队项目集合的工作项类型。
您找到的 WorkItemTypeCollection
class 实际上是 WorkItemType
个实例的容器。您已经使用的Project.WorkItemTypes
属性 returns 一个您可以迭代的WorkItemTypeCollection
。但是,此类型未注册为服务 - 这就是为什么 tfctc.GetService<WorkItemTypeCollection>()
returns null.
因此,您在示例中的嵌套 foreach
中所做的实际上就是它的工作原理。您可以使用 LINQ 和 SelectMany
对其进行优化,仅此而已:
var workItemTypes = wis.Projects
.Cast<Project>()
.SelectMany(p => p.WorkItemTypes.Cast<WorkItemType>())
.ToArray();
我正在尝试从 project collection
中获取所有 workitem types
的列表,而无需访问 project collection
中的 project
。
我已经试过了
我可以使用 project
对象获取所有 workitemType
列表的列表,如下代码所示:
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);
}
}
通过搜索 WorkitemType
的列表,我在 TFS 中知道一个 class 作为 WorkItemTypeCollection。
但是在使用它时我无法使用 projectCollection
.
workitemcollection
的对象
我已尝试使用以下代码:
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
我想做什么
我想在 projectcollection
.
WorkItemTypes
的列表
谁能帮我解决这个问题? 如果我错了任何地方,请纠正我。 提前致谢。
工作项类型与团队项目相关联,因此您只能获取团队项目的工作项类型。这背后的原因是每个团队项目可以有不同的工作项类型集。即使您发现多个类型名称相同,例如"Task" 或 "Bug",每个团队项目可能已修改其定义。因此,从本质上讲,所有团队项目的组合工作项类型就是团队项目集合的工作项类型。
您找到的 WorkItemTypeCollection
class 实际上是 WorkItemType
个实例的容器。您已经使用的Project.WorkItemTypes
属性 returns 一个您可以迭代的WorkItemTypeCollection
。但是,此类型未注册为服务 - 这就是为什么 tfctc.GetService<WorkItemTypeCollection>()
returns null.
因此,您在示例中的嵌套 foreach
中所做的实际上就是它的工作原理。您可以使用 LINQ 和 SelectMany
对其进行优化,仅此而已:
var workItemTypes = wis.Projects
.Cast<Project>()
.SelectMany(p => p.WorkItemTypes.Cast<WorkItemType>())
.ToArray();