142

我在一个团队项目中的 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].

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

tf workspace -delete Hudson-ProjectName1-Build-MASTER;domain1\username1 -noprompt -server:http://domain-eg.net:8080/tfs/oldteamproject

它提示工作区已被删除,但我仍然遇到同样的错误。

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

tf workspace -server:http://domain-eg.net:8080/tfs/oldteamproject Hudson-ProjectName1-Build-MASTER

但它说工作区并不像预期的那样存在。

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

tf workspaces /remove:* /collection:http://domain-eg.net:8080/tfs/oldteamproject

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

所以我猜它甚至没有被缓存。

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

4

21 回答 21

199

来自 VS:

  1. 打开团队资源管理器
  2. 单击源代码管理资源管理器
  3. 在工具窗口的导航栏中,有一个标有“工作区”的下拉菜单。
  4. 扩展它并单击“工作区...”选项(是的,有点不直观)
  5. 出现“管理工作区”窗口。单击编辑,您可以添加/删除/编辑您的工作区

源代码控制浏览器

从不同机器上的 VS

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

显示远程工作区

从命令行

从开发人员命令提示符调用“tf workspace”。它将直接调出“管理工作区”!

于 2013-06-24T14:21:11.583 回答
126

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

%LocalAppData%\Microsoft\Team Foundation\3.0\Cache

4.0,5.0

于 2013-10-09T19:53:10.427 回答
22

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

  1. 打开team explorer
  2. 点击Source Control
  3. 右键点击你project
  4. 点击Remove Mapping
于 2013-04-03T10:23:35.037 回答
12

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

因此,这是肯定会起作用的解决方法。以下是解决方法。

  1. 前往“团队探索者”
  2. 转到“源代码管理”
  3. 转到工作区下拉菜单
  4. 点击“工作区...”
  5. 将出现一个弹出窗口
  6. 点击“显示远程工作区”
  7. 现在删除有冲突的工作区,您可以继续您的工作。
于 2015-08-12T06:43:46.090 回答
7

请按照以下步骤操作:

Ctrl + Run 

复制和过去

%LocalAppData%\Microsoft\Team Foundation

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

点击每个文件夹,你会得到

在此处输入图像描述

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

重新打开 Visual Studio。

谢谢。

于 2017-04-13T10:24:57.247 回答
4
于 2016-04-11T19:18:32.223 回答
4

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

  1. 打开开发人员命令提示符。就我而言,我已经使用 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 条相同的记录!)。


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

于 2019-06-27T20:04:12.127 回答
3

我设法按照此处的建议使用 /newowner 命令删除了映射:

如何重新获得对 Team Foundation Server 工作区的访问权限?

该命令打开了一个编辑工作区窗口,我在其中删除了映射。之后我删除了我不需要的工作区。

于 2014-04-09T15:55:17.293 回答
3

团队资源管理器 > 源代码管理资源管理器 >

TFS 删除映射

于 2020-01-23T08:33:19.963 回答
2

您不必删除整个 Cache 文件夹。您将丢失所有设置/首选项 工作区映射存储在一个名为:

用户本地设置/应用程序数据目录下的VersionControl.config 。位于 Windows 7 中:

%LocalAppData%\Microsoft\Team Foundation\x.0\Cache\Volatile

其中 x= 3.0,4.0, 5.0,6.0 等。

在其中你会找到名为 guid 的文件夹,打开它们中的每一个,手动编辑上述文件,以从本地文件夹中删除工作区映射(目录路径将出现在 mappedpaths 属性中)到 TFS 服务器(不再使用)。

于 2016-10-04T11:07:37.187 回答
2

这里的答案都没有删除我的工作区。但这是一种可能适合您的解决方案。

  1. 打开 Visual Studio 命令提示符
  2. 先关闭 Visual Studio 否则删除命令可能不会删除工作区
  3. 列出工作区命令 -> tf /? 从 TFS 版本中查找可用的命令。
  4. 列出工作区-> tf 工作区
  5. 删除工作区 -> tf 工作区 YourWorkspace /delete
于 2016-04-26T16:34:52.897 回答
2

文件 -> 源代码管理 -> 高级 -> 工作区 -> 在管理工作区中选择工作区,然后单击“编辑”,然后您可以更改本地文件夹。

于 2018-01-28T11:39:51.107 回答
1

我被提示通过 Visual Studio 登录到我们的 TFS 服务器,所以我使用了我的 SU 帐户,这通常是访问服务器所必需的。这导致了一些问题,我最终映射到了一个不同的文件夹,没有意识到我刚刚复制了我所有的东西。在某些时候,Visual Studio 恢复为我的普通用户,我“丢失”了挂起的更改,并注意到新的挂起更改被放置在我的旧映射中。

当我尝试重新映射到新位置(SU 帐户链接到的位置)以尝试恢复我的未决更改时,它会告诉我它已经映射到 SU,我不能这样做,但是有没有办法删除地图!显示远程工作区,通过命令行删除所有工作区等什么都没有显示。然后我想“如果它实际上链接到我计算机上的 SU 用户帐户,而不是域怎么办。” 我在本地以我的 SU 身份登录,果然,为该用户设置了一个工作区。我删除了映射,并且能够返回到我的常规用户并重新映射而没有问题。

故事的寓意是,也许另一个用户在同一台​​机器上登录,这对当前登录的用户是不可见的,因此您无法删除甚至查看映射。

于 2017-02-07T20:11:56.380 回答
1

最后删除所有工作区并从头开始。固定的。

于 2016-12-29T14:11:43.520 回答
1

如果上述线索对您没有帮助,请下载 Team Foundation Sidekick 并使用它来删除工作区。

于 2018-01-24T19:50:52.947 回答
1

以下是从 TFS 中删除项目映射的步骤:

(1) 点击查看按钮。

(2) 打开团队资源管理器

(3) 点击源代码管理

(4) 右键单击​​您的项目/目录

(5) 点击删除映射

(6) 最后删除Project表单本地目录。

于 2018-06-09T06:18:49.390 回答
0

如果映射正确,那么您可以撤消/签入您的更改,如果您真的想更改文件夹名称。

或者,如果要删除映射,则在 Visual Studio 中转到 File-> Source Control-> Advanced-> Workspaces-> Edit

现在您可以单击适当的路径并删除映射。

于 2020-10-07T09:58:49.897 回答
0

谢谢你的帮助!

查找问题工作区 SELECT * FROM tbl_Workspace WHERE WorkspaceName like '%xxxxx%'

找到所需的工作空间 SELECT * FROM tbl_Workspace WHERE WorkspaceName like '%zzzzz%'

选择 Edit Top 200 tbl_WorkingFolder 然后查找问题映射 SELECT * FROM tbl_WorkingFolder WHERE WorkspaceId = Problem WorkspaceId from above

将 WorkspaceId 更改为所需的 WorkspaceId

最后转到 Project Explorer 并在项目上选择 Remove Mapping

修改 VB6 MSSCCPRJ.SCC 以匹配所需的 WorkSpace

于 2017-02-23T20:33:42.610 回答
0

首先在您的系统中下载并安装 Team Explorer 插件,然后转到 Source Control Explorer。在导航窗格中找到 Workspace 字段并单击 Workspaces 选项。单击 Workspaces 选项后,您将看到所有映射的工作空间。单击删除按钮并删除所需工作区的映射。

于 2017-04-21T19:37:09.013 回答
0

运行tf workspaces以查看当前工作区映射。输出如下所示:

在此处输入图像描述

然后运行tf workspace /delete "{workspace};{user}

使用上面的输出,删除工作区bi

tf workspace /delete bi;James Wierzba

于 2017-12-11T22:31:07.050 回答
0

您还可以通过简单地编辑 .sln 文件并删除 tfs 绑定的 GlobalSection 元素来删除 tfs 映射。

于 2016-11-27T10:01:05.147 回答