如何在tfs构建服务器上获取当前的changesetid?

时间:2016-02-05 12:57:39

标签: powershell tfs tfsbuild

我需要在TFS构建服务器上的assemblyversions中包含changesetid。我创建了powershell脚本,更新[AssembliVersion]属性是所有assemblyinfo.cs。

如何获取tfs中文件夹的当前变更集?

目前我有这样的事情:

JOIN

但它返回最新的变更集ID,而不是正在构建的变量集

3 个答案:

答案 0 :(得分:1)

如果您在门禁签到范围内执行此操作并且尚未提交更改,则不会有“当前”更改集。我们做了类似的事情,但是在构建完成之后,那时只需查询buildserver以获取最新版本,如下所示;

var buildDetail = context.GetExtension<IBuildDetail>();
    var vcserver = buildDetail.BuildServer.TeamProjectCollection.GetService<VersionControlServer>();

    var queryHistoryResult = vcserver
                                .QueryHistory(versionControlPath, VersionSpec.Latest, 0, 
                                              RecursionType.Full, null, null, null, 1, 
                                              true, false)
                                .Cast<Changeset>()
                                .ToList();

    if (!queryHistoryResult.Any())
    {
        throw new ChangesetNotFoundException("GetLatestChangesetActivity: No current changeset available.");
    }

    var changeset = queryHistoryResult.First();

与您的代码看起来非常相似。

答案 1 :(得分:1)

如果您正在使用新的构建系统,那么您应该能够使用环境变量$ env:BUILD_SOURCEVERSION 见:https://msdn.microsoft.com/en-us/library/vs/alm/build/scripts/variables

对于XAML构建,您可以使用TF_BUILD_SOURCEGETVERSION环境变量:https://msdn.microsoft.com/en-us/library/hh850448%28v=vs.120%29.aspx

答案 2 :(得分:0)

要从指定的版本获取关联的变更集摘要,您可以使用InformationNodeConverters.GetAssociatedChangesets Method