c# - 如何从 TFS 2017 中的构建获取关联的变更集?

标签 c# tfs tfs-sdk changeset

通过 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

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

关于c# - 如何从 TFS 2017 中的构建获取关联的变更集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44396954/

相关文章:

TFS 2015 U1 vNext 构建发布工件总是失败,无法将工件与资源关联

git - 以编程方式查询托管在 TFS 上的 Git 存储库的权限

tfs - 在TFS中使用WorkItemStore.Query指定参数的项目列表

c# - 使用 Moq 验证集合中类的方法调用

c# - subject.OnError 抛出

c# - BackgroundWorker 不与 TeamCity NUnit runner 一起工作

c# - 打开不同的方法但使用相同的名称 - C#

visual-studio - TF400324 : Team Foundation services are not available from server <Server/CollectionName> in Visual Studio 2012

TFS Sprint 项目打印插件

build - TFS : Query for builds containing a specific changeset