防止在使用TFS 2010时,将pdb文件上传至Visual Studio 2012。

4
我们最近从Visual Studio 2010迁移至Visual Studio 2012。我们仍在使用TFS 2010,并使用门禁式检入。 自从开始使用Visual Studio 2012以来,当检入时,VS会自动将一个项目的输出文件夹中的pdb文件包含在变更集中。 当然,我们可以手动排除它们,但这可能会导致错误,因为如果有人忘记排除这些文件,则在检入后的所有构建都将失败。
我不想阻止pdb文件被检入,我只想将默认设置为已排除。事实上,在Visual Studio 2010中,这些甚至没有自动添加到源代码控制作为一项更改。
最奇怪的是,如果转到团队资源管理器并“添加项目到文件夹”,默认情况下所有pdb文件都被排除(这是正确的行为),所以我不明白为什么Visual Studio会将输出文件夹中的pdb文件添加到变更集中。
更新 尝试了所有建议后问题仍然存在。我们已经从TFS中删除了bin文件夹,但Visual Studio 2012仍然会将输出文件夹中的DLL包含在变更集中。与此同时,我们升级到了TFS 2012,但问题仍然存在。
2个回答

3
您可以添加一个名为 .tfignore 的文件,将 *.pdb 文件添加到其中以使它们被自动排除。您可以在文件夹或项目级别添加此文件。
另一种解决方案: 假设您拥有必要的权限, 1. 在团队资源管理器中右键单击根服务器名称,在“团队基础架构服务器设置”上悬停, 2. 选择“源代码控制文件类型”。打开一个窗口,列出了TFS默认识别的所有文件类型。 3. 选择要从源代码控制中排除的文件类型,并单击“删除”按钮。注意:这适用于TFS服务器上的所有项目。
参考:自定义版本控制忽略的文件

在发布问题之前,我已经看到了第一种解决方案。这仅适用于添加.tfignore的签入(当.tfignore在更改集中时)。至于第二个解决方案:pdb不会出现在此列表中。 - nflash
实际上,如果您将.tfignore文件放置在根项目级别,则会忽略每个文件夹中的所有.pdb文件。# 忽略此文件夹及其所有子文件夹中的.pdb文件*.pdb - SoftwareCarpenter
我觉得你没有理解我的评论...如果我添加这个文件,它可以用于我所做的checkin。对于所有其他的checkin,除非再次checkin .tfignore,否则它不起作用。我不能要求在我公司工作的所有开发人员都在他们所做的checkin中包含一个.tfignore。这与要求他们删除checkin中的所有.pdb文件的可能性相同。 - nflash
如果您将该文件添加到源代码控制中,您可以确保团队中的其他人共享相同的排除设置。 - SoftwareCarpenter

0
一般来说,你不应该将输出文件夹检入版本控制。如果你没有检入输出文件夹,那么你也就不会检入 .pdb 文件。

我知道这个。我没有检查输出文件夹。Visual Studio 2012会自动添加这些文件,而不需要我或我的同事询问。在TFS上的唯一.dll或.pdb是第三方库。此外,这并不总是发生,也不会发生在我们输出文件夹中的所有文件上。 - nflash
一般来说,bin文件夹不应该在源代码控制中。这是“源代码”控制,而不是“二进制”控制。 - John Saunders
是的,我知道。有时候改变人们的工作习惯很难。但我并不反对将第三方库添加到源代码控制中,事实上我认为这是一种常见的解决方案。我不明白的是为什么这个文件在 bin 文件夹中。它应该在另一个文件夹中,需要该库的项目应该引用它。我将尝试将此库更改为另一个文件夹(我们已经有一个用于第三方库的文件夹),看看是否解决了问题(可能会)。然而,在 VS2012 中处理此文件夹的方式已经发生了一些变化。 - nflash
应用程序引用的所有内容(除了GAC中的程序集)都会被移动到bin文件夹中。第三方库等需要放在单独的“lib”文件夹中,并将其检入源代码控制。 - John Saunders
从 bin 文件夹中获取 dll 无效。我将 dll 移动到另一个文件夹,并从 tfs 中删除了 bin 文件夹。Visual Studio 仍然会将 bin 文件夹中的 DLL(项目编译的结果)添加到源代码控制中。 - nflash
显示剩余3条评论

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