为什么在尝试隐藏构建中的子文件夹时出现错误 "The item ... may not be cloaked because it does not have a mapped parent"?

Why do I get the error "The item ... may not be cloaked because it does not have a mapped parent" when trying to cloak a sub-sub-folder from a build?

我正在使用 TFS 2015 构建 C# 解决方案。在该解决方案的文件夹结构深处是包含某些大型非代码数据文件的文件夹。我希望一些构建 包括 这些,而一些构建 排除 它们。

使用 TFS 2015 网络界面,我设置了应该排除 这些文件的构建。然后,我使用 Repository 选项卡并使用 Cloak 类型映射将数据文件夹添加到映射部分。

但是,当我将此构建排队时,它失败并显示 "The item ... may not be cloaked because it does not have a mapped parent"。

当然映射了代码库中的顶级文件夹。为什么 TFS 会抱怨这个,我该怎么办?

我不知道原因,但我知道要解决此问题,您只需阅读错误消息 :

The item ... may not be cloaked because it does not have a mapped parent

因此,如果您在失败的构建中遇到了这种存储库结构:

Type   Server Path                    Local Path
Map    $/Project                      $(build.sourcesDirectory)\Project
Cloak  $/Project/Assets/Data/Data2013
Cloak  $/Project/Assets/Data/Data2014
Cloak  $/Project/Assets/Data/Data2015

您只需要再添加一行,如下所示:

Map    $/Project/Assets/Data          $(build.sourcesDirectory)\Project\Assets\Data

现在,您尝试 Cloak 的项目有一个 "mapped parent",您的构建应该会成功。

您可能认为整个存储库树 'mapped' 就足够了,但显然不够。

您的解决方案正是针对此问题的准确解决方案。我只会再补充一点,这与 why.

有关

在 TFS 中,隐藏路径意味着该路径不包含在其文件夹的递归映射中。当您的工作站在父目录的映射目录中有源代码,并且源代码尚未添加到源代码管理时,本地目录被认为是隐藏的。

简单来说,就像提到的错误信息一样,这是设计使然,如果文件夹没有映射的父文件夹,则无法隐藏“Cloaked”文件夹。更多详细信息,您可以在MSDN Link中查看cloak的相关信息:Optimize your workspace using explicit, implicit, cloaked, and non-recursive folder mappings

ProjectXYZ / Drop ' cannot be cloaked because it does not have a mapped parent.

出现此错误的另一种方法是,如果您在地图中指定了一个 Sln 文件:

指定单个 Sln 文件的正确位置是步骤 1 中的进程。

检查这个快速解决方案。解决了我的问题。

http://jawedm.blogspot.com/2013/05/error-in-team-foundation-server-this.html

  1. Source Control Explorerwindow中,右击父节点 -- 上下文菜单出现
  2. 单击上下文菜单中的删除映射...选项——删除 出现映射对话框
  3. 选中标有递归

  4. 的框
  5. 点击Change按钮--提示 出现, 说明,“新映射的项目将不会被下载,直到你 执行一个get。您现在要获取 $/[PARENT PATH] 吗?”,其中 "[PARENT PATH]'为父节点路径

  6. 单击“否”按钮 -- 提示和 Remove Mapping windows 消失,然后出现 Get window
  7. 注意:使用您的最佳判断 这里! 我 决定 到 单击获取进度 window 中的取消按钮,以防止 映射子对象