如何以编程方式从 Visual Studio Team Services 下载解决方案

How to download solution from Visual Studio Team Services programmatically

我需要一种从 Visual Studio Team Services 下载源代码的方法,基本上我需要一个压缩的解决方案,就像我在 VSTS 站点上时您可以手动下载它一样。

我尝试过的:

我已经完成了 VSTS API reference 但不幸的是我找不到我需要的东西。

我可以采取的解决方法是:

  1. 发出 POST 并检索 items batch,这将 return 主分支
  2. 中所有文件的列表
  3. 遍历列表并一个一个下载文件

但我希望有一种方法可以给我一个包含所有文件的分支的 zip。

从源代码下载文件的方法有很多种:

选项 1:通过 REST 下载文件 API。

详细步骤可以参考here。然后你可以将文件压缩为zip格式。

选项 2:通过排队构建下载文件。

您可以使用 Archive Files 任务和 Copy Files 任务添加构建定义,将 .sln 文件从源代码压缩到您的本地路径。两个任务的设置如下:

存档文件任务

要存档的根文件夹(或文件):单击 按钮以 select 您要下载的 .sln 文件。

复制文件任务

源文件夹:$(Build.ArtifactStagingDirectory)

内容:*.zip

目标文件夹:可以定义本地路径,如C:\a.

我设法使用 .NET Client Libraries for VSTS 找到解决方案:Microsoft.TeamFoundationServer.Client 和 Microsoft.VisualStudio.Services.Client,正如人们猜测的那样,它们是 VSTS REST API 功能的包装器。

为了从 TFVC 中检索压缩文件夹内容,我使用的方法是:

Microsoft.TeamFoundation.SourceControl.WebApi.TfvcHttpClient.GetItemsBatchZipAsync(TfvcItemRequestData itemRequestData, Guid project)

这是一个 Gist 完整的代码示例。