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