如何从 TFS 2017 中的构建中获取关联的变更集?
How to get associated changesets from build in TFS 2017?
使用 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,而实际上应该返回一些变更集。
是否有对上述代码的更改建议,或其他方法?还是这在 TFS 2017 中不再有效?
Microsoft 正在更新 TFS 以使用 REST API。我想 this REST API call 会得到你想要的。
这是 .NET client libraries 的 link 用于进行 REST 调用。
此外,如果您还不知道,Microsoft 正在弃用 XAML 版本。有关详细信息,请参阅 this blog post。
我能够通过使用我认为是 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#,我之前能够在使用 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,而实际上应该返回一些变更集。
是否有对上述代码的更改建议,或其他方法?还是这在 TFS 2017 中不再有效?
Microsoft 正在更新 TFS 以使用 REST API。我想 this REST API call 会得到你想要的。
这是 .NET client libraries 的 link 用于进行 REST 调用。
此外,如果您还不知道,Microsoft 正在弃用 XAML 版本。有关详细信息,请参阅 this blog post。
我能够通过使用我认为是 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;