不同版本(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回来