【问题标题】:How to get associated changesets from build in TFS 2017?如何从 TFS 2017 中的构建中获取关联的变更集?
【发布时间】:2017-11-07 21:07:53
【问题描述】:

使用 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 中不再适用?

【问题讨论】:

  • 我是否需要提供足够的凭据才能查看变更集?这看起来很奇怪,因为我可以成功查看有关构建的其他详细信息。

标签: c# tfs tfs-sdk changeset


【解决方案1】:

我能够通过使用我认为是 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;

【讨论】:

    【解决方案2】:

    Microsoft 正在更新 TFS 以使用 REST API。我认为this REST API call 会得到你想要的。

    这是用于进行 REST 调用的 .NET client libraries 的链接。

    此外,如果您还不知道,Microsoft 正在弃用 XAML 构建。请参阅this blog post 了解更多信息。

    【讨论】:

    • 对不起,如果我不清楚。我不再使用 XAML 构建过程,但仍在运行代码来自定义构建。我想我正在寻找一些特定的方法来获取变更集,或者通过 REST API 调用(我还没有成功),或者我在上面尝试使用的客户端库。
    • 还有 API 4.1-preview 的文档:Get Build Changes
    猜你喜欢
    • 1970-01-01
    • 2017-08-16
    • 2019-09-22
    • 1970-01-01
    • 2017-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多