如何从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中不再起作用?
我能够用我所相信的是包装的REST API来做到这一点:Microsoft.TeamFoundation.Build2.WebApi.dll
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。
对不起,如果我不清楚。我不再使用XAML构建过程,但仍然运行代码来定制构建。我想我正在寻找一些特定的方式来获取变更集,无论是通过REST API调用(我还没有成功),或者我尝试使用上面的客户端库。 –
还有对API的版本4.1预览文档:获取生成更改(https://docs.microsoft.com/en-us/rest/api/vsts/build/builds/get%20build%20changes) – BojanCG
难道我需要提供足够的凭据,以便能够查看更改集?这看起来很奇怪,因为我可以成功查看关于构建的其他细节。 –