gpt4 book ai didi

visual-studio - visual studio 扩展如何在引用 TFS 客户端 dll 时同时针对 2013 和 2015

转载 作者:行者123 更新时间:2023-12-04 06:00:30 25 4
gpt4 key购买 nike

我有一个需要同时支持 Visual Studio 2013 和 2015 的 visual studio 扩展(部署为 .vsix)。

问题是该扩展需要与 TFS 通信,因此它使用 TFS 客户端库,在 VS2015 中,这些已从部署 GAC 更改为 be a nuget package消费应用程序应该重新分发。

我应该如何设置我的 VS 包的引用,以便它适用于两个版本的 Visual Studio?


我尝试了几种方法:

  1. 引用 2013 GAC dll:在 VS2015 机器上加载时,找不到这些 DLL。
  2. 引用 2013 GAC dll,但也复制本地(与 .vsix 捆绑):缺少这些 DLL 的一些其他依赖项。
  3. 引用 2015 dll(来自 nuget)并与 .vsix 捆绑:在 2013 年和 2015 年加载正常,但在 2013 年不起作用(实际上使用 TFS 功能失败 - 例如调用 GetLocalWorkspaceInfo("c :\src\path") 返回 null)

最佳答案

我会:

  1. 引用 2013 版程序集,以确保您仅使用该版本中可用的 API。 (当然,2015 版是向后兼容的。)
  2. 添加一个 AssemblyResolve Hook ,这样当 2015 年的程序集无法加载时,您可以加载它们来代替 2013 年的程序集。 Instructions for previous versions are available , 但应该是相似的。

我认为选项 3 最有效,但找不到您的工作区的原因是 2013 年和 2015 年使用不同的工作区缓存。我怀疑您可以通过建立与服务器的另一个连接并将工作区缓存更新到 2015 年的位置来克服这个问题。尽管这指出了更深层次的兼容性问题:您将无法为 VS 连接/工作区对象挂接事件监听器。

关于visual-studio - visual studio 扩展如何在引用 TFS 客户端 dll 时同时针对 2013 和 2015,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32883290/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com