为了检索Changeset包含在哪个Build中的信息,我们使用Team Foundation Sidekicks的“Label Sidekick”,我们在其中放置Build& amp;的标签。期待找到新建的Changeset。
我们在TFS 2010中的开发过程正在使用'Gated'签到,所以我们面临的情况是Sidekicks中没有提供最新的签到(我们实际收到之前的变更集建立)。这是可以解释的,因为在标签发生时,尚未提交最新的更改。
BuildLog会正确报告关联的变更集。
我在构建过程模板中做了几个实验,但似乎无法得到我们需要的东西。
例如,将“标记”活动放置在“运行代理”范围之外,将我引导到一个构建,该构建在一开始就失败,并且“对象引用未设置为对象的实例”。 (我想这与事实有关,我必须扩大'标签'和'工作区'变量的范围以使第二部分运行。)
此尝试的构建过程模板的“之前”状态为here(这可行),“之后”状态(“对象引用未设置...”)为here。
总而言之,两种不同类型的输入可以帮助我:
我应该如何更改构建流程模板,以便在提交门控签名后标签发生? ( - 这会使Sidekicks中的显示合理化)
或
如何以编程方式检索每个Build的关联Changeset? ( - 这将使我能够编写一个可以淘汰Sidekicks角度的小应用程序)
答案 0 :(得分:3)
您可以使用TFS API完成此操作。
public static void GetBuild()
{
var tfs = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri("http://tfsdevlonuk:8080/tfs/gazprom.mt"), new UICredentialsProvider());
tfs.EnsureAuthenticated();
var buildServer = tfs.GetService<IBuildServer>();
// Get Project Name
var versionControl = tfs.GetService<VersionControlServer>();
var teamProjects = versionControl.GetAllTeamProjects(true);
// Get Builds for a team project
var buildDetails = buildServer.QueryBuilds(teamProjects[0].Name);
// For each build
foreach (IBuildDetail buildDetail in buildDetails)
{
// Get the build details
var buildInfor = buildDetail.Information;
// More build infor like shelveset, etc
Debug.Write(buildDetail.LabelName + buildDetail.ShelvesetName);
}
上面的代码将帮助您以编程方式获取构建详细信息。我有一些关于如何以编程方式连接到tfs并使用tfs api的博客文章。 http://geekswithblogs.net/TarunArora/archive/2011/06/18/tfs-2010-sdk-connecting-to-tfs-2010-programmaticallyndashpart-1.aspx