TFPT.exe如何找到要工作的工作区?

50

在使用命令中的 tfpt 时,我遇到了以下错误:

PS D:\Main Line> tfpt uu /noget
Unable to determine the workspace.

我在尝试使用“撤消未更改”命令,但是我也看到了其他命令出现了这个错误。我所在的路径正是在TFS工作区中映射的确切路径。我也尝试了这个,但它也不起作用。

PS D:\Main Line> tfpt uu /recursive /noget 'D:\Main Line'
Unable to determine the workspace.

我以为只是使用当前路径来找到它,但我无法使其正常工作。有人知道这是如何工作的吗?

5个回答

63

我也遇到了同样的问题,我在“Power tools”中的一个帮助文件(TFPTCommandLineTool.mht)的底部找到了答案。

错误信息

TFPT错误:无法确定工作区

当使用与版本控制相关的命令运行tfpt时,可能会收到以下错误之一:

Unable to determine the workspace 
Unable to determine the source control server

解决方法:

  • 在已经映射到 Team Foundation 源代码控制的目录中运行 tfpt.exe
  • 使用 tf workspaces 命令更新本地工作区缓存。 tf.exe 工具可以在 Visual Studio 安装文件夹的子文件夹 Common7\IDE 中找到。如果启动 Visual Studio 命令提示符,然后可以运行以下命令(取决于您的 TFS/Visual Studio 版本 - 您应该使用与您正在使用的 TFPT 版本相匹配的版本,例如,如果您有用于 VS2015 的 TFPT,请从 VS2015 命令提示符中使用 TF):
    • VS 2008-2013 / TFS 2008:
      • tf workspaces /s:serverURL
    • VS 2010-2013 / TFS 2010(以及可能的较新版本):
      • tf workspaces /collection:collectionURL
    • VS 2008 / TFS 2010(以及可能的较新版本):
      • tf workspaces /s:collectionURL
  • 如果您最近安装了 Visual Studio 2012,则可能需要将其连接到您在 Visual Studio 2010 中使用的同一 TFS 服务器/收藏夹。

7
一开始不相信这个(从映射的目录运行)- 但是它是真的! - Simon_Weaver
3
我的疑惑在于,我原本认为工作区的最高级目录在工作区内,但实际上并非如此。所有工作区定义都将根目录以下的目录进行映射。例如,如果$/Collection/foo/bar映射到c:\workspace\foo\bar,则tf.exe只能识别c:\workspace\foo\bar中的工作区,而无法识别c:\workspace或c:\workspace\foo中的工作区。 - Jeff Youngstrom
更新工作区缓存对我很有帮助,因为我刚刚使用Visual Studio重命名了我的工作区。 - Holistic Developer
1
+1 给 Visual Studio 2012 位。我不需要在 2012 年映射工作区,但我确实需要连接到我在 2010 年使用的同一服务器/集合。真是太棒了。 - BrainSlugs83
@Felickz 你是以管理员身份运行 Visual Studio 吗?请记住,你的账户和整个计算机都有环境变量。如果你以管理员身份运行 cmd,你将获得管理员和计算机的变量,但如果你以你自己的身份运行,你将获得你的变量和计算机的变量。(也许你可以检查一下 PATH 是否按账户而非按计算机配置?) - BrainSlugs83
显示剩余4条评论

19
当使用命令tf workspaces /s:serverURL时,请确认使用正确的tf.exe
我曾经遇到同样的问题,因为我使用了以下目录下的tf.exe而陷入困境:

\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE

而不是这个目录下的:

\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE


谢谢!自从我将映射的文件夹移动到不同位置后,我已经几个月没有使用tfpt shell扩展了。我尝试了所有方法来让它正常工作,最终这个方法奏效了。虽然我不知道为什么它在我的11.0文件夹中使用tf.exe,而我只安装了VS 12.0。 - Samih
意识到可能使用了错误的tf.exe解决了我的问题。我工作的公司要求我们在机器上安装4个不同版本的Visual Studio来构建我们维护的不同产品,因此这非常重要。 - vullnetyy

4

针对 Visual Studio 2017 用户

当我尝试在一个新安装了VS215和VS2017的机器上运行tfpt命令行时,遇到了同样的问题。目前编写此文时,tfpt工具的最新版本来自于TFS Power Tools 2015。这意味着在tfpt工具能够找到工作区之前,必须先在VS2015中加载本地工作区映射。

由于我的团队正在使用VS2017,因此我只在这个Visual Studio版本中进行了工作区映射。当我打开VS2017开发人员命令提示符来使用此工具时,我收到了“无法确定工作区”的消息。

为解决此问题,我打开了VS2015并将团队资源管理器连接到TFS服务器。它立即识别出在VS2017下进行的工作区映射。完成这些步骤后,在VS2015和VS2017开发人员命令提示符下tfpt工具可以正确工作。


那就是解决方案,太棒了! - Khh

1

0
实际上,虽然我相信在某些情况下这些变通方法可能会修复问题,但并不是所有情况都适用。我强烈怀疑这最终指向了PowerTools代码中的一个错误。我这么说的原因是tf workspace命令可以从VS命令控制台轻松检测到我的机器上的工作区,但是使用完全相同的路径信息,TFPT无论我尝试什么都无法在我的笔记本电脑上检测到它。我刚刚得到这台笔记本电脑,并安装了VS 2010、2012和2013,以及相应的Power Tools安装程序,并指向了一套当前跨越多个TFS 2010和TFS 2012实例的项目。由于这种多对多的关系,我怀疑某个地方有错误的程序集引用,一些因素的组合,GAC、路径、环境变量、VS安装、TFS存储库。在每个VS版本中,我尝试从VS 2010命令运行TFPT 2010可执行文件,以此类推,尝试了上述工作区缓存更新的所有形式...但是没有任何效果。但是,使用相同的项目,我从安装了VS 2010和TFPT 2010的旧服务器连接并成功运行了相同的命令。所以我认为这与您的系统上运行的内容有关,在未来,我将对并排运行不同版本的软件更加持怀疑态度。

我也无法让它运行。 - Ievgen
我非常同意。我处于相同的情况,只是没有那么多不同版本的VS。 - Adam Hardy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接