You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过TFS2018 API检索解决方案及特定构建关联的全部方案文件?

关于TFS2018 API的两个问题解答

我来帮你拆解这两个问题,下面结合TFS2018的REST API细节来一步步说明:


1. 如何使用TFS2018 API检索解决方案文件

解决方案文件(.sln)通常存储在Git或TFVC仓库中,所以我们需要针对不同的仓库类型调用对应的API端点:

情况1:代码存在Git仓库中

步骤1:准备认证信息

首先生成一个个人访问令牌(PAT),权限至少勾选「Code (Read)」。请求时把PAT放在Authorization头里,格式是Basic <base64编码的PAT>(注意:编码时用户名留空,只编码:<你的PAT>,比如用命令echo -n ":your-pat-value" | base64生成)。

步骤2:调用API筛选.sln文件

使用GET请求,通过Items端点递归检索仓库中所有.sln文件,URL格式如下:

http://<你的TFS服务器地址>:8080/tfs/<集合名>/<项目名>/_apis/git/repositories/<仓库ID>/items?path=/&recursionLevel=Full&includeContentMetadata=true&api-version=3.2&%24filter=contains(path,'.sln')
  • 把<仓库ID>替换成你项目的Git仓库ID(可以通过仓库列表API获取)
  • %24filter=contains(path,'.sln')是用来过滤出所有后缀为.sln的文件

举个curl命令的例子:

curl -u :your-pat-here "http://tfs-dev:8080/tfs/DefaultCollection/MyWebProject/_apis/git/repositories/1a2b3c4d-5e6f-7g8h-9i0j-1k2l3m4n5o6p/items?path=/&recursionLevel=Full&includeContentMetadata=true&api-version=3.2&%24filter=contains(path,'.sln')"

返回的JSON结果里会包含每个.sln文件的路径、大小、下载链接等信息。

情况2:代码存在TFVC仓库中

流程类似,只是调用TFVC的Items端点:
URL格式:

http://<你的TFS服务器地址>:8080/tfs/<集合名>/<项目名>/_apis/tfvc/items?path=$/<项目名>/&recursionLevel=Full&includeContentMetadata=true&api-version=3.2&%24filter=contains(path,'.sln')

同样用$filter筛选.sln文件,认证方式和Git仓库一致。


2. 获取与特定构建关联的所有解决方案文件

要实现这个需求,需要先拿到构建对应的源代码版本(Git提交ID/TFVC变更集),再基于这个版本检索对应的.sln文件:

步骤1:获取目标构建的详细信息

调用Builds端点获取构建的源代码关联信息:
GET请求URL:

http://<你的TFS服务器地址>:8080/tfs/<集合名>/<项目名>/_apis/build/builds/<构建ID>?api-version=3.2

返回结果里重点关注两个字段:

  • sourceVersion:该构建对应的Git提交哈希或者TFVC变更集编号
  • repository:包含仓库ID和类型(Git/TFVC)

步骤2:基于源代码版本检索解决方案文件

如果是Git仓库

用步骤1拿到的仓库ID和sourceVersion(提交ID),调用Git Items端点并指定版本:

http://<你的TFS服务器地址>:8080/tfs/<集合名>/<项目名>/_apis/git/repositories/<仓库ID>/items?path=/&recursionLevel=Full&versionType=commit&version=<sourceVersion>&includeContentMetadata=true&api-version=3.2&%24filter=contains(path,'.sln')

这个请求会返回该构建对应的提交快照中存在的所有.sln文件,确保你拿到的是构建时使用的版本。

如果是TFVC仓库

用sourceVersion(变更集号)调用TFVC Items端点:

http://<你的TFS服务器地址>:8080/tfs/<集合名>/<项目名>/_apis/tfvc/items?path=$/<项目名>/&recursionLevel=Full&versionType=changeset&version=<sourceVersion>&includeContentMetadata=true&api-version=3.2&%24filter=contains(path,'.sln')

额外小技巧:从构建定义中直接获取指定的解决方案

如果你的构建定义明确指定了要构建的.sln文件,可以直接调用构建定义API拿到这个路径:

http://<你的TFS服务器地址>:8080/tfs/<集合名>/<项目名>/_apis/build/definitions/<构建定义ID>?api-version=3.2

返回结果里的process.parameters字段会包含solution参数,里面就是构建定义中配置的解决方案路径。


内容的提问来源于stack exchange,提问作者doorman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 09:33:46