如何在TFS中使用TfsTeamProjectCollection解决找不到类型报错问题
解决方案
1. 先确认项目框架适配性
TfsTeamProjectCollection属于旧版TFS客户端对象模型,仅支持.NET Framework 4.6.1+,不兼容.NET Core、.NET 5/6/7/8等跨平台框架。如果你用的是非.NET Framework框架,直接放弃旧API,用下方的新版REST客户端方案即可。
2. 兼容.NET Framework的修复步骤
- 先删除你之前添加的所有异常引用:
using assembly、using namespace是C++/CLI的语法,C#不支持,直接全部删掉,只保留必要的命名空间引用即可。 - 进入NuGet包管理界面,卸载所有已安装的TFS/DevOps相关NuGet包,重启Visual Studio后,仅重新安装Microsoft.TeamFoundationServer.ExtendedClient最新稳定版,安装过程会自动补齐所有依赖。
- 安装完成后仅需添加一行using即可:
此时using Microsoft.TeamFoundation.Client;TfsTeamProjectCollection就能正常识别,不会再报找不到类型、多余using的错误。
3. 非.NET Framework框架的替代方案(更简单)
你原本的需求是从IdentityRef中获取邮箱,根本不需要调用TfsTeamProjectCollection查询身份服务,IdentityRef本身自带邮箱属性,直接读取即可:
IdentityRef test = (IdentityRef)workItem.Fields["System.CreatedBy"]; // 直接读取内置邮箱字段 string email = test.Properties["Mail"].ToString();
如果需要查询更多身份信息,用你已经安装的Microsoft.VisualStudio.Services.Client包的IdentityHttpClient即可:
var credentials = new VssBasicCredential(string.Empty, 你的个人访问令牌); var connection = new VssConnection(new Uri(你的组织地址), credentials); var identityClient = connection.GetClient<IdentityHttpClient>(); var identity = await identityClient.ReadIdentityAsync(test.Id); string email = identity.Mail;
4. 兜底修复
如果以上操作后仍有报错,进入Visual Studio菜单:工具->NuGet包管理器->包管理器设置->常规,点击清除所有NuGet缓存,之后重新生成项目即可。
内容的提问来源于stack exchange,提问作者Nathan Dehnel
相关产品推荐
相关产品推荐

