How I deal with Visual Studio solution and project files in Git?
c#, git, versioning, visual-studio, workflow
Solution
Committing `.sln` and `.csproj` files is usually the best practice (as in this answer), but merging requires some attention. See "Why are my `.csproj` files getting messed up after a `git rebase`?".
`*.csproj -text merge=union` (see below) `*.sln -text merge=union`v
Or you can give up on `.csproj` and regenerate them locally as in this tweet. Another reason to ignore those csproj files is if they are regenerated, as in this context
yellowblood warns (in the comments) about serious conflict issue with `csproj` file when used with the `merge=union` strategy. That echoes the article "Merge conflicts in `csproj` files". That is why there is a suggestion for VS IDE should support file patterns in project files (in order to not modify the `.csproj` file if one add a new `.cs` file that fits that pattern).
It's been suggested that if Visual Studio sorted its elements first, that would help mitigate the problem. That helps reduce the incidental conflicts caused by Visual Studio's apparent non-deterministic sort of elements. But it doesn't make the issue of merge conflicts go away.
Problem
I usually work with .NET using Git for versioning. In my team, we work in parallel and we often commit our code to integrate in the application. Everything is fine BUT the Visual Studio's solution and project files. We found two ways: - Never commit those files, everyone has his own - Include those file in the version system Both ways have pros&cons, but basically we struggle every time we pull from central repo. Here some spare issues we found: (in parentesis, the reference to the above list) - We have to include other's files in the project (1) or include our newest (2) - If we work on different architectures (x86/x64) we have to manually change `.csproj` files (2) - Same issues replied for references and NuGet packages and so on. Is there a proper workflow I can use?