【问题标题】:Excluding Files from TFS Server Workspace从 TFS 服务器工作区中排除文件
【发布时间】:2015-08-12 14:14:01
【问题描述】:

我们刚刚在我们公司实施了 TFS,我不小心包含了 bin 和 obj 文件夹。我想排除它们。我在谷歌上搜索,发现基本上有两种方法可以做到这一点:

1)https://msdn.microsoft.com/en-us/library/66tw9ezk(v=vs.90).aspx

在 Visual Studio 中,打开解决方案资源管理器并选择要排除的文件。 在“文件”菜单上,单击“源代码管理”,然后单击“从源代码管理中排除”。 当您准备好将文件置于源代码管理之下时,您可以访问“文件”菜单并单击“源代码管理”,然后取消选中“从源代码管理中排除”。

在我的文件>源代码管理中,我没有看到从源代码管理中排除或在高级下。

2) How do I permanently exclude the bin and obj folders from TFS 2012 checkin?

我尝试添加 .tfignore,但在“Promote Candidate Changes”对话框中找不到“通过扩展名忽略”、“忽略文件”等。据我了解,这仅适用于本地工作区,而不适用于服务器工作区。

我们设置了在文件被更改时检查文件的解决方案,因此当有人构建项目时,他会在 dll 上获得排他锁,然后其他人无法编译。

【问题讨论】:

  • 为什么不直接从 TFS 中删除 bin 和 obj 文件夹?向 TFS 添加解决方案时,应让 Visual Studio 使用解决方案上下文菜单中的“将解决方案添加到源代码管理”命令为您完成。
  • @OldFart 它会在本地删除它,对于 Web 项目,当它缺少 bin 文件夹时,项目将无法编译,即它不会创建它。

标签: c# .net visual-studio-2013


【解决方案1】:

在 Mike 描述的步骤之后,您可以进一步定义忽略规则。撤消对您要排除的文件的待定更改,然后单击“已排除的更改”下显示的“检测到:123”链接。

这会打开一个新窗口,您可以在其中无限期地忽略这些更改。它通过创建一个.tfignore 文件并将其添加到源代码管理来实现这一点。 UI 的替代方法是不手动创建此文件并将其签入。这应防止 Team Explorer 显示与忽略文件中的模式匹配的文件。

确保这些文件已从源代码管理中删除,如果它们被意外签入,您可以销毁它们以确保它们真正消失。您需要使用tf destroy从命令行执行此操作

当您使用远程 itemspec 销毁本地文件时,调用 Destroy 不会删除它们:

C:\>tf destroy /collection:http:
//jessehouwing:8080/tfs/DefaultCollection $/Scrum/test.txt.txt /noprompt
Destroyed: $/Scrum/test.txt.txt

C:\Program Files (x86)\Microsoft Visual Studio 14.0>dir "c:\Workspaces\Local\Scrum"
 Volume in drive C has no label.
 Volume Serial Number is 008A-AC5B

 Directory of c:\users\jhouw\Source\Workspaces\Local\Scrum

12-08-2015  20:12    <DIR>          .
12-08-2015  20:12    <DIR>          ..
12-08-2015  20:12                 0 test.txt.txt
               1 File(s)              0 bytes
               2 Dir(s)  297.229.512.704 bytes free

在执行tf get /collection:http: //jessehouwing:8080/tfs/DefaultCollection $/Scrum /recursive 之后,它确实会被删除。如果有问题的文件在下一次构建期间重新生成,这应该不是问题。

另见:

如果您使用的是服务器工作区,我能想到的唯一方法是为您的源代码控制存储库设置一个禁止路径签入策略。它是 Team Foundation Server Power Tools 的一部分;您需要在所有开发人员的计算机上安装与您的 Visual Studio 版本相匹配的电动工具版本。

注意:这些使用正则表达式,因此您需要调整模式以匹配;)。

【讨论】:

  • 好的,我会试试的。谢谢!如果它忽略了 bin 和 dll,这是否意味着它也不会锁定它们?它会完全从源代码管理中删除它们吗?
  • 好的,我试过了浏览 56 个项目的列表并手动排除 bin 和 obj 文件夹会很痛苦。没有从源代码管理选项中排除,这太疯狂了!
  • 如果你tf destroy 这些文件一劳永逸,你的问题就会消失。
  • 在获取最新版本时不会破坏本地版本吗?这也意味着我必须将每个使用 TFS 的人设置为 TFS 管理员:(
  • 如果您执行 tf-destory 一次,您可以设置禁止路径策略以防止他们意外再次签入。是的,它们会在更新后被删除。我不明白为什么这会是个问题。重建将重新创建文件。
【解决方案2】:

根据我的个人经验,实现这一目标的最简单方法如下:

  1. 查看 -> 团队资源管理器(Ctrl+\、Ctrl+M)
  2. 点击待更改
  3. 在您的Included Changes列表中,右键单击所需的文件夹。
  4. 点击排除

排除的更改现在应该出现在下面的排除的更改列表中。

【讨论】:

  • 是否从 TFS 或当前变更集中排除文件夹/文件?我试过了,但是当我编译时它仍然会锁定 DLL。
  • 我对术语不太熟悉,但如果您排除任何文件/文件夹,它将不会再次出现在 Included Changes 列表中(即使在签入后)除非您手动包含它。
  • 如果整个团队签入他们的项目,并且我将 obj 和 bin 文件夹添加到排除的更改列表中并进行编译,则 dll 仍然被锁定(签出)并且没有其他人可以编译。跨度>
  • 您的 DLL 是否正在编译到共享文件夹中?
  • 它被编译到我不小心包含在 TFS 中的 bin 和 obj 文件夹中。我试图将它们从 TFS 中排除,以便每个人都有自己的 bin 和 obj 文件夹。
猜你喜欢
  • 2016-03-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-09
  • 2012-01-20
  • 1970-01-01
  • 2015-12-08
  • 2018-03-07
相关资源
最近更新 更多