C#学习教程:在C'#中以编程方式获取所有TFS分支我发现这个博客详细介绍了如何获取分支:ShowingallbranchhierarchiesinTFS2010我修改了代码以将所有内容存储在列表中。privatevoidSetup(){stringserverName="serverName";//在代码中,这被设置为实际的服务器名称TfsTeamProjectCollectiontfs=newTfsTeamProjectCollection(newUri(serverName));VersionControlServervcs=tfs.GetService();varbos=vcs.QueryRootBranchObjects(RecursionType.OneLevel);Array.ForEach(bos,(bo)=>DisplayAllBranches(bo,vcs));}privatevoidDisplayAllBranches(BranchObjectbo,VersionControlServervcs){_listOfBranches.Add(bo.Properties.RootItem.Item);varchildBos=vcs.QueryBranchObjects(bo.Properties.RootItem,RecursionType.OneLevel);foreach(varchildinchildBos){if(child.Properties.RootItem.Item==bo.Properties.RootItem.Item)continue;DisplayAllBranches(孩子,vcs);我遇到的问题是BranchObjects[]bos总是空的。有没有我遗漏的东西,或者有更好的方法来获取所有分支机构的列表?在做了一些研究之后,我发现了问题所在。我们的TFS结构如下所示:$/Root$/Root/Folder$/Root/Folder/Branch向下的第一层不返回任何分支,因为没有任何分支。因此,我使用了一种更简单的方法来获取所有分支。varbranchObjects=vcs.QueryRootBranchObjects(RecursionType.Full);foreach(varbranchinbranchObjects){varbranchName=branch.Properties.RootItem.Item;varparentFolder=branchName.Substring(0,branchName.LastIndexOf('/'));如果(!_listOfBranches.Contains(parentFolder)){_listOfBranches.Add(parentFolder);}_listOfBranches.Add(分支名称);}_listOfBranches.Sort();这不是最干净的方法。但它能够检索指定项目的所有分支,以及父文件夹(目前不包括Root)。该代码应该可以正常工作(对我而言)。我怀疑您的服务器名称变量中缺少您的集合名称?如果你有一个合理的标准设置,你的serverName变量格式应该是:http://ServerName:Port/tfs/CollectionName例如:http://tfsServer01:8080/tfs/MyCollection你能验证vcs对象是有效的吗?您可以执行一些其他操作,例如getitems吗?您确定您的存储库中有一个分支吗?请注意,“分支对象”是在TFS2010中添加的,它们不仅仅是分支操作。在sourcecontrolexplorer中,它们有一个灰色的图标,可以使用上下文菜单创建上面是C#学习教程:GetallTFSbranchesprogrammaticallyinC#分享的全部内容,如果对大家有用需要了解更多C#学习教程,希望大家多加关注——本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
