【发布时间】:2015-10-10 14:08:14
【问题描述】:
我在通过 TFS API 从 Visual Studio Online 项目检索构建信息时遇到问题。看来,我可以连接到项目并找到预期的团队项目集合和团队项目,但是尽管项目有两个构建定义和多个构建,但 TFS API 在查询构建时总是向我返回零长度数组定义或构建。该项目是一个 Git 项目。我的生产代码类似于我编写的用于调试问题的测试代码:
var tfsUri = new Uri("https://[my project].visualstudio.com");
var tcs = new TfsConfigurationServer(tfsUri);
var teamProjCollections = tcs
.CatalogNode
.QueryChildren(
new[] { CatalogResourceTypes.ProjectCollection },
false,
CatalogQueryOptions.None)
.Select(collectionNode => new Guid(collectionNode.Resource.Properties["InstanceId"]))
.Select(collectionId => tcs.GetTeamProjectCollection(collectionId));
var tpc = teamProjCollections
.Single(x => x.Name == @"[my project].visualstudio.com\DefaultCollection");
var newTeamProjects = tpc
.CatalogNode
.QueryChildren(
new[] { CatalogResourceTypes.TeamProject },
false,
CatalogQueryOptions.None);
var tp = newTeamProjects
.Single(x => x.Resource.DisplayName == "[team project name]");
var buildServer = tpc.GetService<IBuildServer>();
var buildDefinitions = buildServer.QueryBuildDefinitions(tp.Resource.DisplayName);
buildDefinitions 始终是一个空数组。构建定义肯定在那里 - 我可以使用 Visual Studio 连接到项目,并将它们显示在团队资源管理器的构建选项卡中。这段代码过去对我有用,但是我连接的始终是 TFVC 项目,而不是 Git 项目。有趣的是,如果我使用团队项目集合中的VersionControlServer,如下所示:
var vcs = tpc.GetService<VersionControlServer>();
var teamProjects = vcs.GetAllTeamProjects(true);
..teamProjects 始终是一个长度为零的数组。
另外,如果我尝试通过指定一个非常通用的构建详细规范来获取团队项目集合的所有构建,我不会返回任何构建。
一些附加信息:我正在使用 VS Enterprise 2015 RC。我是 VSO 项目的管理员,并创建了团队项目集合、团队项目和构建定义。我已经推送了一些代码,并运行了一些构建。通过 API 连接时,我以自己的身份登录。我的凭据似乎是正确的。
所以,在试图弄清楚这一点时,我有一些问题。我需要不同的方法来访问 Git 存储库吗?也许只有通过新的 TFS 2015 REST API 才有可能?也许我需要让我的构建在 VSO 项目中对我自己“可见”?
【问题讨论】:
标签: c# visual-studio tfs azure-devops