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

时间:2009-12-01 15:24:35

标签: c++ visual-studio-2010 visual-studio version-control visual-c++-2010

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

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

我目前的想法是检查它们,但我想知道是否有任何理由不这样做,或者可能是我应该检查它们的好理由。

显而易见的好处是,如果我正在查看其他人的计算机,文件夹结构将匹配,但也许他们想要逻辑地重组内容?

4 个答案:

答案 0 :(得分:102)

我们故意拉了.filter。当我们转换为.vcxproj MSBuild格式时,文件信息来自.vcproj。 一个原因正是您所指出的,过滤器纯粹是一种逻辑视图,不同的团队成员可能需要不同的视图。 另一个是,有时构建设置为检查项目文件的时间戳,并且如果它已经改变则触发重建 - 因为这可能意味着要构建不同的源文件,或者不同的设置等等。我不这样做回想一下,如果我们实际上发布了构建触发方式,但我们的想法是我们不想仅因为过滤器发生变化而触发重建,因为它们不会影响构建。

答案 1 :(得分:55)

以前版本的Visual Studio(至少版本6.0和2008)将这些信息存储在他们自己的项目文件中(分别是.dsp和.vcproj文件),这当然很适合添加到SCC。

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

答案 2 :(得分:4)

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

*.vcxproj.filters merge=union

到您的.gitattributes文件。

有关详细信息,请参阅Using .gitattributes to avoid merge conflicts

答案 3 :(得分:0)

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