如何从TFS 2017中的构建中获取相关的变更集?

时间:2017-06-06 18:09:24

标签: c# tfs changeset tfs2017

使用c#,我之前能够使用InformationNodeConverters.GetAssociatedChangesets(IBuildDetail)在XAML构建过程中从TFS 2012获取关联的更改集。我从CodeActivityContext.GetExtension<IBuildDetail>()获得了IBuildDetail。

现在我正在使用TFS 2017构建过程,我尝试使用下面的代码执行类似操作,但它不会返回更改集。

var teamProjectCollection = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri("http://ourtfsserver:8080/tfs/DefaultCollection"));
var versionControlServer = teamProjectCollection.GetService<VersionControlServer>();
var buildServer = teamProjectCollection.GetService<IBuildServer>();
var build = buildServer.GetBuild(new Uri(string.Format("vstfs:///Build/Build/{0}", "3807")));
var changeSets = InformationNodeConverters.GetAssociatedChangesets(build);

以上所有内容似乎都有效,并且构建成功返回,但是changeSets.Count()为0,实际上应该返回一些更改集。

上面的代码是否有建议的更改,或者是另一种方法?或者这在2017年TFS中不再有效?

2 个答案:

答案 0 :(得分:2)

Microsoft正在更新TFS以使用REST API。我认为this REST API call会让你想要的。

这里是.NET client libraries用于进行REST调用的链接。

此外,如果您还不知道,Microsoft正在弃用XAML版本。有关详细信息,请参阅this blog post

答案 1 :(得分:2)

我能够通过使用我认为是REST API的包装器来实现这一点:SELECT cron.schedule('45 12 * * *', $$CREATE TABLE testCron AS Select 'Test Cron' as Cron$$);

请参阅:https://social.msdn.microsoft.com/Forums/vstudio/en-US/838da6a7-1dea-4d61-aaad-b789e23c64f2/how-to-get-associated-changesets-from-build-in-tfs-2017?forum=tfsgeneral

Microsoft.TeamFoundation.Build2.WebApi.dll