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

在评估 VisualStudio2010Beta 2时,我发现在转换后的目录中,我的 Vcproj文件变成了 Vcxproj文件。每个项目旁边还有 过滤器文件,它们似乎包含文件夹结构的描述(源文件、头文件等)。

您认为这些过滤器文件应该按用户保存,还是应该在整个开发组中共享并签入 SCC?

我目前的想法是检查它们,但我想知道是否有任何理由不这样做,或者也许是好的理由,为什么我一定要检查它们。

显而易见的好处是,如果我在查看其他人的机器,文件夹结构将匹配,但是他们可能希望以逻辑方式重新组织内容?

64270 次浏览

以前版本的 Visual Studio (至少是6.0和2008版本)将这些信息存储在它们自己的项目文件中(。Dsp 和。Vcproj 文件) ,当然可以将其添加到 SCC 中。

我想不出任何理由不将这个.filter 文件包含在 SCC 中

当我们将.vcxprojMSBuild 格式转换为.vcxprojMSBuild 格式时,我们有意将.filter.file 信息从.vcproj 中提取出来。 其中一个原因正如您所指出的,过滤器纯粹是一个逻辑视图,不同的团队成员可能需要不同的视图。 另一个原因是,有时建立构建是为了检查项目文件的时间戳,如果发生了更改,就会触发重建——因为这可能意味着需要构建不同的源文件,或者需要不同的设置,等等。我不记得我们是否真的以这种方式触发了构建,但是我们的想法是,我们不想仅仅因为过滤器发生了变化而触发重建,因为它们不会影响构建。

我只是发现,如果你使用 Git,你可以标记。将过滤器文件作为合并的联合处理,使其更简单。只要加上这句话:

*.vcxproj.filters merge=union

到你的. gitproperties 文件。

有关详细信息,请参阅 使用. gittribute 避免合并冲突

如果您使用 CMake(或类似的构建工具)来生成诸如 *.sln*.vcxproj*.vcxproj.filters等文件,则不应该添加它,因为这些文件可能包含到您的项目文件夹和其他 只有你电脑的特定文件夹的完整路径。