通过 C#,我之前能够在 XAML 构建过程中使用 InformationNodeConverters.GetAssociatedChangesets(IBuildDetail)
从 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,而实际上应该返回一些变更集。
是否有对上面代码的建议更改,或者是否有替代方法来执行此操作?或者这在 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;
关于c# - 如何从 TFS 2017 中的构建获取关联的变更集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44396954/