【问题标题】:TFS check-in error: Could not find a part of the pathTFS 签入错误:找不到路径的一部分
【发布时间】:2020-01-23 04:05:44
【问题描述】:

我们的团队正在处理一个使用 TFS 作为源代码控制的项目。有时我想签入一些错误。

D:\CustomManager.1.0.7184.35750\lib\net461\CustomManager.dll: Could not find a part of the path 'D:\CustomManager.1.0.7184.35750\lib\net461\CustomManager.dll'.

我必须去Packages 文件夹并创建一个新文件夹。之后,我必须在其中复制以前版本的包,然后重命名它以解决此问题。这种方式有点烦人,因为有时在此之后,不同版本会显示新的错误。

附加信息:仅当我更新 NuGet 包时才会显示此错误。 有没有简单的方法来解决这个问题?

【问题讨论】:

  • 这是一个 X/Y 问题。停止将二进制包放入源代码管理。使用 NuGet 存储库。

标签: visual-studio tfs nuget nuget-package


【解决方案1】:

您似乎直接将库(dll)签入到 TFS 并管理它们的版本控制。

不推荐,有多个缺点,例如永远不清楚哪些项目正在使用哪些程序集的哪些版本。这是维护的噩梦。

建议您使用 Nuget 在 TFS 中处理这些库。您应该编译您的代码,将其打包在 Nuget 中并发布。对于多个项目,您可以在适当的时候升级他们的 nuget 引用,或者在需要时坚持使用旧版本。如果需要引用已知良好的稳定版本,只需确保将项目配置为从 NuGet 提取特定版本。

TFS 使用包管理来托管 NuGet、npm 和 Maven 包以及所有其他 TFS 资产:源代码、构建、发布等,还能够处理外部包。

您可以将外部包添加到 TFS 包管理提要。恢复包时,选择源。所有需要的包都将完全恢复。为此,只需使用Push NuGet packages 指定您要发布的包和目标提要位置。

更多详情请参考Get started with NuGet Package Management in TFS


更新:

继续寻找旧包,如果您已经在项目中引用了最新的 dll,则不会发生这种情况。请仔细检查这部分。

在您的情况下,如果您想检查源代码管理中的 dll,您应该在解决方案/项目中添加 dll 并使用相对路径。否则,tfs 服务器可能找不到路径。

对于缓存问题,建议你clear TFS cache然后重新启动VS,然后再次签入,这样可以解决问题。

【讨论】:

  • 我已经在使用 Nuget 来安装库了。所以我认为 TFS 过程是正确的,但有时它找不到旧包(现在不需要,因为它们已更新)并且它给了我一个错误,所以我必须制作假文件夹和包来绕过这些错误。
  • @MrBitmap 你的意思是你还有这个问题Could not find a part of the path 'D:\CustomManager.1.0.7184.35750\lib\net461\CustomManager.dll' 吗?
  • 是的,我已经通过 NuGet 更新了 CustomManager,但是在签入时,它会给我一个错误,即找不到以前的版本。似乎 TFS 正在 Windows 缓存或类似的地方寻找旧包。
  • @MrBitmap 感谢您的快速反馈。我需要一些时间在我身边进行测试并深入研究。如果发现任何可以缩小问题范围的有用信息。将在这里更新。
  • 嗨@MrBitmap 我无法复制它。不知道为什么解决方案/项目一直在寻找旧包。如果您已经在项目中引用了最新的 dll,则不会发生这种情况。回到问题,在你的情况下,如果你想检查源代码管理中的 dll,你应该在解决方案中添加 dll 并使用相对路径。否则,tfs 服务器可能找不到路径。对于缓存问题,建议你clear TFS cache然后重新启动VS,这可能会解决问题
猜你喜欢
  • 2015-10-29
  • 2022-06-16
  • 2017-05-03
  • 1970-01-01
  • 2020-03-02
  • 1970-01-01
  • 1970-01-01
  • 2017-09-10
相关资源
最近更新 更多