不同版本(16、15、14)的 TFS API dll 在单个项目中不起作用

Posted

技术标签:

【中文标题】不同版本(16、15、14)的 TFS API dll 在单个项目中不起作用【英文标题】:TFS API dll's of different versions(16,15,14) do not work in single project 【发布时间】:2021-01-23 05:49:58 【问题描述】:

我在一个解决方案中有一个项目,其中我使用的是版本 15 的 TeamFoundation dll,而在另一个项目中我使用的是版本 16 的 TeamFoundation dll。 在我的第三个项目中,我想使用这两个项目,它们有两个不同版本的 TeamFoundation dll,但我无法使用它。它给了我错误:

无法加载文件或程序集 'Microsoft.TeamFoundation.Client, Version=15.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' 或其依赖项之一。

还收到警告“发现无法解决的不同版本的“Microsoft.TeamFoundation.Client”之间的冲突。”

如何在一个项目中使用两个不同版本的 teamfoundation dll。

所需的 dll:

Microsoft.TeamFoundation.Client
Microsoft.TeamFoundation.Common
Microsoft.TeamFoundation.WorkItemTracking.Client
Microsoft.TeamFoundation.WorkItemTracking.Common

如被问及,我正在分享我正在使用的代码:

 private void connectToServer(string serverName)
    
        TfsTeamProjectCollection teamProjectCollection = new TfsTeamProjectCollection(new Uri(tfsServerName));
        teamProjectCollection.Connect(ConnectOptions.None);
    
   

感谢任何帮助。提前致谢。

【问题讨论】:

你为什么要这样做?您可以对所有项目只使用 1 个版本。或者使用绑定重定向来定位 1 版本,而不管代码是针对什么编译的。只有当你将项目部署到 Visual Studio 或 Azure DevOps Server 的实例中时,版本必须匹配,如果单机则不需要不同版本,实际上建议使用最新版本。如果您确实需要支持多个版本,请查看使用条件引用来解决此问题的这个项目:github.com/tfsaggregator/tfsaggregator 推荐的方法是使用 NuGet 来拉入所需的依赖项,而不是使用任何直接的程序集依赖项。 您好 Shweta Paatil,您是否遵循 jessehouwing 的建议(使用 NuGet 提取所需的依赖项)?你能解决吗? 【参考方案1】:

您可以将项目切换为使用 TeamFoundation dll 的一种通用版本。删除当前对本地 TeamFoundation dll 的引用并添加对 NuGet 包的引用:Microsoft.TeamFoundationServer.ExtendedClient

此包包含所有需要的库,您无需更新应用程序的源代码。

【讨论】:

以上是关于不同版本(16、15、14)的 TFS API dll 在单个项目中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

2017年TFS - VS 2017 15.5更新后默认为MSBuild 14。需要MSBuild 15回来

TFS 服务器 API 仅列出 XAML 生成定义

TFS 2013 更新 M83

TFS 中的跨分支合并?

Team Foundation Server - 使用 API 同步到 SVN

使用新硬件升级 TFS SQL Server 数据层