我应该将.vcxproj.filter文件添加到源代码控制吗?

186

在评估Visual Studio 2010 Beta 2时,我发现在转换目录中,我的vcproj文件变成了vcxproj文件。此外,每个项目旁边还有一个vcxproj.filter文件,似乎包含了文件夹结构的描述(\Source Files、\Header Files等)。

您认为这些筛选文件应该针对每个用户保留,还是应该共享整个开发组,并检入SCC?

我目前的想法是将它们检入,但我想知道是否有任何不这样做的理由,或者可能有充分的理由我应该肯定地检入它们。

明显的好处是,如果我查看别人的机器,文件夹结构将匹配,但也许他们想要逻辑上重新组织东西呢?

4个回答

121

我们在将项目从 .vcproj 转换为 .vcxproj MSBuild 格式时,有意将 .filter. 文件信息剥离出来。其中一个原因就是你所指出的,即过滤器仅仅是一种逻辑视图,不同的团队成员可能需要不同的视图。另一个原因是有时构建设置会检查项目文件的时间戳,并在其更改时触发重新构建 - 因为这可能意味着有不同的源文件需要构建,或者有不同的设置等。我不记得我们实际上是否使用了这种构建方式,但是想法是我们不希望仅仅因为过滤器变化而触发重新构建,因为它们并不影响构建。


3
到目前为止,我们最终将它们检入,并对这种安排感到满意。事实证明,如果其他开发人员具有相同的过滤器结构,则与他们合作会更加愉快。 - jschroedl
3
换句话说,你需要像处理一个文件一样来管理这两个文件。我认为其他人也不会将它们分开处理。这是一个好主意,但对实际操作进行一些思考会更有帮助(比如将运行时放在WinSxS中)。 - gbjbaanb
9
我将它们分别处理。 就我而言,作为项目状态的一部分需要保留的垃圾越少越好,因此我认为这是一个不错的决定。 - rwallace
7
如果我们不想使用任何抽象的/逻辑树而只想看到纯文件系统,那么我们是否可以完全禁用这些过滤器? - Johan Boulé
4
@JohanBoule:我完全赞同!他们应该直接取消IDE中的过滤器。已经有了逻辑树形结构,称为“文件系统”。目前存在大量重复--每个文件都必须添加到文件系统、构建脚本(vcxproj)、过滤器(vcxproj.filters)、源代码控制,可能还有其他地方。这违反了DRY原则。很幸运,似乎过滤器文件是可选的。你可以删除它们并在IDE中使用“显示所有文件”按钮。可惜这不是默认设置。 - Yakov Galka
显示剩余2条评论

64

之前的Visual Studio版本(至少6.0和2008版本)会将这些信息存储在自己的项目文件中(分别为.dsp和.vcproj文件),当然这些文件可以添加到源代码控制(SCC)中。

我无法想象不包含这些.filter文件在SCC中的任何理由。


我跟你一起。我已经检查过了。谢谢! - jschroedl

7

如果您使用CMake(或类似的构建工具)生成像*.sln*.vcxproj*.vcxproj.filters等文件,则不应添加此文件,因为这些文件可能包含指向您的项目文件夹和其他仅特定于您计算机的文件夹的完整路径。


6
我发现如果你使用Git,可以将.filter文件标记为合并时的联合,以使合并变得更简单。只需添加以下行:

*.vcxproj.filters merge=union

将以下内容添加到您的 .gitattributes 文件中。

有关更多详细信息,请参见使用 .gitattributes 避免合并冲突


提到的链接没有说明这个 .filters 文件应该在 gitattributes 文件中包含 "union"。 - ollydbg23
2
但它告诉了我们merge=union的作用 - 没有其他承诺。有了这个知识和一个非常广泛的 *.filter 文件的外观想法,很容易看出为什么 merge=union 对于这些文件是一个好主意。 - Peter Schneider

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