TFS2018下找不到Microsoft.TeamFoundation.Framework.Common怎么办?
TFS 2018 环境下
Microsoft.TeamFoundation.Framework.Common 引用异常解决方案 报错根本原因
- 程序集概念混淆:
Microsoft.TeamFoundation.Common.dll与Microsoft.TeamFoundation.Framework.Common.dll是两个完全独立的程序集,仅名称相似但内部承载的类型无重叠。前者不存在Microsoft.TeamFoundation.Framework.Common命名空间下的CatalogQueryOptions枚举,是触发BC30456编译错误的直接诱因。 - 版本适配错位:Nuget平台已下架的
Microsoft.TeamFoundation.Common包仅适配TFS2015及更早版本,和TFS2018的程序集体系不兼容,无法提供对应版本的类型成员。
可落地操作步骤
- 定位匹配TFS2018的正确程序集
- 目标程序集默认存放于TFS应用层服务器安装目录下的
ApplicationTier\WebServices\bin子路径,并非TFS Server根目录或VS安装目录 - 从该目录选取版本号为16.0.x(对应TFS2018正式版)的
Microsoft.TeamFoundation.Framework.Common.dll,该文件内包含完整的CatalogQueryOptions枚举定义 - 注意不要误用同目录下的
Microsoft.TeamFoundation.Common.dll,该文件仅为旧版本TFS的兼容桥接组件,无法提供目标命名空间的类型
- 目标程序集默认存放于TFS应用层服务器安装目录下的
- 清理项目原有无效引用
- 移除项目中所有已安装的下架TFS相关Nuget包,删除所有指向其他版本目录下同名dll的引用,避免多版本程序集冲突
- 直接通过Visual Studio的「浏览添加引用」功能,指向上述步骤找到的版本匹配的dll文件
- 匹配项目运行环境要求
- 检查项目目标.NET Framework版本,TFS2018对应的程序集要求基于.NET Framework 4.6.1及以上版本编译,目标框架版本过低会触发类型成员匹配失败
常见避坑提示
- 不要使用Azure DevOps Server 2019及以上版本的同名称dll替代TFS2018版本的程序集,跨版本程序集的成员定义、枚举值、命名空间归属均有调整,即使能通过编译,运行时也会触发程序集加载异常
- 如果开发机未部署完整TFS Server,可以从同版本的TFS2018应用层服务器上,连带拷贝和目标dll配套的关联组件到本地项目的独立libs目录下统一引用,不要单独只拷贝单个dll文件
内容的提问来源于stack exchange,提问作者Lee
相关产品推荐
相关产品推荐

