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

问题描述:

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

现在,我使用的是2017年的TFS构建过程,我试着用下面的代码类似的东西,但它没有返回的变更。

上述
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的时候,其实应该有一些变更集返回。

是否有一个建议的更改上面的代码中,或者可替换的方式来做到这一点?或者这只是在TFS 2017中不再起作用?

+0

难道我需要提供足够的凭据,以便能够查看更改集?这看起来很奇怪,因为我可以成功查看关于构建的其他细节。 –

我能够用我所相信的是包装的REST API来做到这一点:Microsoft.TeamFoundation.Build2.WebApi.dll

参见: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

using Microsoft.TeamFoundation.Build.WebApi; 
using Microsoft.VisualStudio.Services.Common; 
using Microsoft.VisualStudio.Services.WebApi; 
using System; 
using System.Net; 

var u = new Uri("http://ourtfsserver:8080/tfs/DefaultCollection/"); 
var c = new VssCredentials(new Microsoft.VisualStudio.Services.Common.WindowsCredential(new NetworkCredential("username", "password", "domain"))); 
var connection = new VssConnection(u, c); 
var buildServer = connection.GetClient<BuildHttpClient>(); 
var changesets = buildServer.GetBuildChangesAsync("projectname", 3807).Result; 

微软更新TFS使用REST API。我认为this REST API call会让你想要你想要的。

这里给.NET client libraries一个链接,使REST调用。

另外,如果你不是已经知道,微软将弃用XAML构建。有关更多信息,请参阅this blog post

+0

对不起,如果我不清楚。我不再使用XAML构建过程,但仍然运行代码来定制构建。我想我正在寻找一些特定的方式来获取变更集,无论是通过REST API调用(我还没有成功),或者我尝试使用上面的客户端库。 –

+0

还有对API的版本4.1预览文档:获取生成更改(https://docs.microsoft.com/en-us/rest/api/vsts/build/builds/get%20build%20changes) – BojanCG