C# 列表';区域';用于TFS项目

C# 列表';区域';用于TFS项目,c#,tfs,workitem,C#,Tfs,Workitem,我一直在玩C#中的Microsoft.TeamFoundation模式中的WorkItem对象,但我想知道是否有人知道我如何引用“Area”类型的对象,或者说“Iteration”类型的对象 似乎这些在TFS中被视为对象,但我还没有看到关于如何在C#中引用这些对象的任何信息 您可以使用WIQL按[Area]或[Iteration]过滤工作项,但如果我想用所有区域或迭代填充组合框,该怎么办 另外,如何查看我的工作场所的TFS项目的数据库结构 谢谢各位 安迪看一看。这里有示例代码和演示 这里有一个快

我一直在玩C#中的Microsoft.TeamFoundation模式中的WorkItem对象,但我想知道是否有人知道我如何引用“Area”类型的对象,或者说“Iteration”类型的对象

似乎这些在TFS中被视为对象,但我还没有看到关于如何在C#中引用这些对象的任何信息

您可以使用WIQL按[Area]或[Iteration]过滤工作项,但如果我想用所有区域或迭代填充组合框,该怎么办

另外,如何查看我的工作场所的TFS项目的数据库结构

谢谢各位

安迪看一看。这里有示例代码和演示

这里有一个快速查询,可以完成这项工作(下载/):

void Main()
{
常量字符串集合地址=”http://tfsserver:8080/tfs/MyCollection";
常量字符串ProjectName=“MyProject”;
使用(var tfs=tfstreamprojectcollectionfactory.GetTeamProjectCollection(
新Uri(CollectionAddress)))
{
tfs.确保重新验证();
var server=tfs.GetService();
var projectInfo=server.GetProjectFromName(ProjectName);
var nodes=server.ListStructures(projectInfo.Uri).Dump();
//您应该能够通过“迭代”重新考虑这一点
//谢谢你也买了这些。
var nodesXml=server.GetNodesXml(
节点
.Where(node=>node.Name==“区域”)
.Select(node=>node.Uri).ToArray(),
正确的);
白斑变种=
Parse(nodesXml.OuterXml)
.子体(“节点”)
.选择(xe=>new
{ 
Path=xe.Attribute(“Path”).Value,
ID=xe.Attribute(“NodeID”).Value,
})
.Dump();
}
}

谢谢你,戴夫。因为我对LINQ没有任何经验,所以我从你发布的链接开始。设法使其工作,但仅适用于层次结构的顶层。我正在努力找到子节点,例如迭代:Releases/1/1.0/1.01。我可能会回来寻求更多的帮助。
void Main()
{
    const String CollectionAddress = "http://tfsserver:8080/tfs/MyCollection";
    const String ProjectName = "MyProject";

    using (var tfs = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(
        new Uri(CollectionAddress)))
    {
        tfs.EnsureAuthenticated();
        var server = tfs.GetService<ICommonStructureService>();

        var projectInfo = server.GetProjectFromName(ProjectName);
        var nodes = server.ListStructures(projectInfo.Uri).Dump();

        // You should be able to re-factor this with "Iteration"
        // for getting those too.
        var nodesXml = server.GetNodesXml(
            nodes
                .Where(node => node.Name == "Area")
                .Select(node => node.Uri).ToArray(),
            true);

        var areaPathAndId =
            XElement.Parse(nodesXml.OuterXml)
            .Descendants("Node")
            .Select(xe => new 
            { 
                Path = xe.Attribute("Path").Value, 
                ID = xe.Attribute("NodeID").Value, 
            })
            .Dump();        
    }
}