使用TFS客户端库获取2017版TFS服务器所有团队列表报错求助
解决TFS2017使用最新预览版客户端库获取团队列表的异常问题
这个异常的核心原因很明确:你用的最新预览版客户端库是针对Azure DevOps Services或者较新版本的Azure DevOps Server(原TFS)设计的,而TFS2017的API体系和这些新库完全不兼容。那个7a4d9ee9-3433-4347-b47a-7a80f1cf307e是新API的专属资源标识,TFS2017根本没有注册这个端点,所以调用时必然会报错。
给你两个可行的解决方案:
1. 降级客户端库到兼容TFS2017的稳定版本
TFS2017对应的客户端库版本是15.x系列(因为TFS2017的内部版本号是15.0),你需要卸载当前的预览版NuGet包,安装对应版本的稳定包:
# 卸载现有预览包 Uninstall-Package Microsoft.TeamFoundationServer.Client -Force # 安装兼容TFS2017的稳定版本 Install-Package Microsoft.TeamFoundationServer.Client -Version 15.112.1
这个版本是经过验证可以和TFS2017完美配合的,不会出现资源未注册的问题。
2. 确保代码适配TFS2017的API逻辑
降级库之后,你的原有代码大概率可以直接运行,但要确认你的Connection对象是正确指向TFS2017的项目集合URL,比如:
var tfsUri = new Uri("http://your-tfs-server:8080/tfs/DefaultCollection"); var connection = new VssConnection(tfsUri, new VssCredentials()); var teamClient = await connection.GetClientAsync<TeamHttpClient>(); var teams = await teamClient.GetAllTeamsAsync();
如果还是有问题,也可以尝试显式指定项目集合的范围来获取团队:
var teams = await teamClient.GetAllTeamsAsync(projectCollectionId: connection.InstanceId);
为什么预览版库不行?
预览版客户端库会引入Azure DevOps Services的新API特性,这些特性在TFS2017这类旧版本中是完全不存在的。TFS2017的API端点和资源标识和新服务差异很大,新库会默认尝试调用TFS2017没有的端点,自然就会抛出“资源未注册”的异常。
内容的提问来源于stack exchange,提问作者Rocco
相关产品推荐
相关产品推荐

