如何删除TFS工作区映射?

The*_*ght 129 tfs jenkins

我在团队项目中的tfs中有一个项目,然后我们将项目移动到另一个团队项目中的不同位置.

我已经将Jenkins配置为连接到团队项目并构建我的解决方案但是当我更改设置以连接到新的tfs团队项目时,它给出了以下错误:

[workspace] $ "C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\tf.exe" workspace -new Hudson-ProjectName1-Build-MASTER;domain1\username1 -noprompt -server:http://domain-eg.net:8080/tfs/newteamproject ********
The path D:\jenkins\jobs\ProjectName1-Build\workspace is already mapped in workspace Hudson-ProjectName1-Build-MASTER [http://domain-eg.net:8080/tfs/oldteamproject].
Run Code Online (Sandbox Code Playgroud)

所以上面显示有一个现有的工作区,所以我运行下面的命令来删除它

tf workspace -delete Hudson-ProjectName1-Build-MASTER;domain1\username1 -noprompt -server:http://domain-eg.net:8080/tfs/oldteamproject
Run Code Online (Sandbox Code Playgroud)

并且它提示工作区已被删除但我仍然得到相同的错误.

我还通过运行以下命令检查映射是否已被删除:

tf workspace -server:http://domain-eg.net:8080/tfs/oldteamproject Hudson-ProjectName1-Build-MASTER
Run Code Online (Sandbox Code Playgroud)

但它表示工作区不按预期存在.

所以,我认为它可能在某处缓存并运行以下命令:

tf workspaces /remove:* /collection:http://domain-eg.net:8080/tfs/oldteamproject
Run Code Online (Sandbox Code Playgroud)

它说"缓存中没有工作区匹配*来自服务器http://domain-eg.net:8080/tfs/oldteamproject "

所以我猜它甚至都没有缓存.

是什么导致错误以及如何解决?

Bog*_*SFT 188

来自VS:

  1. 打开团队浏览器
  2. 单击Source Control Explorer
  3. 在工具窗口的导航栏中有一个标有"工作区"的下拉列表.
  4. 扩展它并单击"工作区..."选项(是的,有点不直观)
  5. 出现"管理工作区"窗口.单击编辑,您可以添加/删除/编辑工作区

源控制资源管理器

从VS在另一台机器上

您不需要VS与登记在同一台机器上,因为您可以编辑远程登记!在按下"工作区..."项目时出现的对话框中有一个复选框,显示"显示远程工作区" - 只需勾选,您将获得所有登记的列表:

显示远程工作区

从命令行

从开发人员命令提示符调用"tf workspace".它将直接打开"管理工作区"!

  • 不行.工作区仍然无论如何.重启,重启vs,祈祷,一起点击高跟鞋3x ......没什么......不会离开.无法映射到新...无法正常工作. (10认同)
  • 谢谢这项工作,TFS是另一个原因. (7认同)
  • 我删除了所有工作区.然后添加新的,再次得到错误,我的文件夹已经映射到wrokspace(旧的/删除的)url tfs.无法映射到新的tfs /工作区.M使用vs 2015 (5认同)
  • 这是评价最高的答案,但它没有解决工作区不会删除的情况(如上面提到的Beau).你删除它,关闭对话框,再次打开,它又回来了.绝对令人抓狂. (3认同)
  • 他正在构建机器上执行此操作,并且可能没有在那里安装 Visual Studio。 (2认同)

bra*_*c10 121

我遇到了同样的问题,并且能够通过手动删除位于此处的TFS缓存中的所有文件来修复它:

%LocalAppData%\Microsoft\Team Foundation\3.0\Cache
Run Code Online (Sandbox Code Playgroud)

或者4.0,5.0等等.

  • 不适合我.它仍然告诉我`路径已经映射到工作区{mypcname}; domain\zhasan` (5认同)
  • 我有一个\ 4.0\Cache和\ 5.0\Cache,我摆脱了.如果有帮助任何人. (5认同)
  • 谢谢,这对我有用,因为当我的公司更改网络域名时,我的本地tfs缓存数据不同步. (4认同)
  • 这也对我有用。专业提示,在删除“Cache”文件夹中的文件之前,请花一分钟时间复制所有文件和文件夹并将其保存在备份文件夹中,以防万一它对您不起作用而您必须将 TFS 恢复到这是以前的状态。 (2认同)

小智 21

请按照以下步骤从TFS中删除映射:

  1. 打开 team explorer
  2. 点击 Source Control
  3. 右键单击你 project
  4. 点击 Remove Mapping

  • 没有删除映射的选项..仍然面临错误,您的文件夹已经映射到旧的/删除的tfs url的某个工作区.. M使用vs 2015 (6认同)

smt*_*r19 11

错误是真的.您可能在不同的计算机上创建了具有相同名称的工作区 现在您可能已经更换了具有不同机器名称的机器.

所以这里的解决方案肯定会有效.以下是解决方法.

  1. 转到"团队资源管理器"
  2. 转到"源控制"
  3. 转到Workspace下拉列表
  4. 点击"工作区......"
  5. 将出现一个弹出窗口
  6. 点击"显示远程工作区"
  7. 现在删除存在冲突的工作区,您可以继续工作.


Sat*_*ngh 6

请按照以下步骤操作:

Ctrl + Run 
Run Code Online (Sandbox Code Playgroud)

复制和过去

%LocalAppData%\Microsoft\Team Foundation
Run Code Online (Sandbox Code Playgroud)

您将获得不同版本的TFS,例如 在此输入图像描述

点击每个文件夹即可获得

在此输入图像描述

现在删除这些文件夹中的所有数据.

重新打开Visual studio.

谢谢.


Jax*_*ian 6

这里的所有答案似乎都是部分答案,并不适用于所有情况。我认为这个答案在所有情况下都适用,假设您有适当的权限。

  1. 打开开发人员命令提示符(与 Visual Studio 一起安装的单独工具)。就我而言,我已经使用 VS 2019 的开发人员命令提示符对此进行了测试。
  2. 键入此命令:tf workspaces

请注意,结果可能会列出几个具有相同结构的表。如果您只看到一张表,那么其他答案中的一些假设可能对您有用。但是,如果您看到两个或更多表,那么该Collection字符串就很重要!对于我们的示例,我们假设您有两个集合(两个与四个没有什么不同,只是其中一个比另一个更乏味):

https://dev.azure.com/foohttps://bar.visualstudio.com/

运气好的话,你会知道你想与这两者中的哪一个合作。但是,如果您需要循环遍历所有这些集合,那么您只需一次进行一个集合即可。这里的每个“集合”与 Azure DevOps 中的“组织”相同(我认为)。

如果您不使用此集合详细信息,那么您可能会看到一条错误消息:

无法确定源控制服务器。

  1. 接下来,为您要使用的集合键入以下命令:

tf workspaces /computer:* /owner:* /collection:https://dev.azure.com/foo

这将使您更全面地了解您正在处理的事情。如果您有多个 MSA 和 Org 帐户从同一台计算机访问此存储库,这会变得尤其令人讨厌。事实上,您可能有多个看似相同的条目。如果你尝试根据你目前所知道的情况删除它们,可能会不起作用。但我们可以获得更多信息。

  1. 接下来,我们将运行相同的命令,但附加/format:xml到它的末尾:

tf workspaces /computer:* /owner:* /collection:https://dev.azure.com/foo /format:xml

现在,这为您提供了一堆带有一些附加属性的 XML。我们可能最关心的是所有者别名。这是您现在需要检查并删除这些工作区的缺失信息。如果没有这些附加信息,很容易碰壁并被错误消息卡住:

指定一个工作区。

  1. 现在我们已经拥有了所需的所有信息。给定其他OwernAliases条目,选择您想要删除的唯一条目(如果有多个条目,则重复)并使用以下命令(列出了几个示例):
  • tf workspace /delete /collection:https://dev.azure.com/foo "MyWorkspaceName;Windows Live ID\John.Doe@hotmail.com"
  • tf workspace /delete /collection:https://dev.azure.com/foo "MyWorkspaceName;John Doe"
  • tf workspace /delete /collection https://dev.azure.com/foo "MyWorkspaceName;2C3E8474-A39C-4785-8794-DC72F09981E6\John.Doe@Example.com"

GUID 标识 AAD 目录,引号用于处理别名中可能存在的任何空格。“MyWorkspaceName”来自您之前列出的工作区的查询。


如果没有这种非常彻底的方法,这个问题中的所有其他答案可能都会失败。虽然其中一些工作将清除本地工作区,但它们不会清除服务器工作区,您仍然可能与之发生冲突。此外,如果您之前使用过其他帐户,事情可能会变得很棘手,例如您从 MSA 帐户切换到 AAD 帐户。如果您拥有一个 MSA 帐户和多个 AAD 帐户,并且所有帐户都具有您在同一工作站上使用的相同电子邮件地址,那么事情就会变得非常棘手。如果其中多个都使用工作区的默认名称:计算机的主机名,那么事情就会变得超级疯狂。就我而言,我有四个工作区,全部具有相同的工作区名称、所有者名称和计算机名称(即,没有 XML 格式的第一个查询有 4 个相同的记录!)。


我不知道是否有比这更图形化的方式来管理这些。我已经看过了,但还没有找到比这更好的方法。