Should I add .vcxproj.filter files to source control?

C++Visual Studio-2010Visual StudioVersion ControlVisual C++-2010

C++ Problem Overview


While evaluating Visual Studio 2010 Beta 2, I see that in the converted directory, my vcproj files became vcxproj files. There are also vcxproj.filter files alongside each project which appear to contain a description of the folder structure (\Source Files, \Header Files, etc.).

Do you think these filter files should be kept per-user, or should they be shared across the whole dev group and checked into SCC?

My current thinking is to check them in, but I wonder if there are any reasons not to do that, or perhaps good reasons why I should definitely check them in.

The obvious benefit is that the folder structures will match if I'm looking at someone else's machine, but maybe they'd like to reorganize things logically?

C++ Solutions


Solution 1 - C++

We intentionally pulled the .filter. file information out of the .vcproj when we translated to the .vcxproj MSBuild format. One reason is exactly what you pointed out, that the filters are purely a logical view, and different team members may want different views. The other is that sometimes the build is set up to check the timestamp of the project file, and trigger a rebuild if it has changed - because that may mean there are different source files to build, or different settings, etc. I don't recall if we actually shipped with the build trigging that way, but the idea was that we did not want to trigger a rebuild simply because the filters changed, as they don't affect the build.

Solution 2 - C++

Previous versions of Visual Studio (at least versions 6.0 and 2008) store that information in their own project file (.dsp and .vcproj files respectively), which of course is good to add to SCC.

I cannot think of any reason to not include this .filter files in SCC

Solution 3 - C++

I just found that if you use Git you can mark .filter files to be treated as a union for merging to make it simpler. Just add the line:

*.vcxproj.filters merge=union

to your .gitattributes file.

See Using .gitattributes to avoid merge conflicts for more details.

Solution 4 - C++

It should not be added in case you use CMake (or similar build tools) to generate files like *.sln, *.vcxproj, *.vcxproj.filters etc., because this files may contain full path to your Project Folder and other only your computer's specific folders.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionjschroedlView Question on Stackoverflow
Solution 1 - C++dan moseleyView Answer on Stackoverflow
Solution 2 - C++jrbjazzView Answer on Stackoverflow
Solution 3 - C++parsley72View Answer on Stackoverflow
Solution 4 - C++V. PanchenkoView Answer on Stackoverflow