Reputation: 29
On the Java platform, the problem of pointless and irritating merge conflicts in so-called "project" files (often arising from meddling by the IDE rather than the developer) was definitively solved the best part of a decade ago. As soon as the technology existed to auto-generate from Maven POMs, the necessity to source control Intellij/Eclipse project files -- and all the associated annoyances and merge conflicts -- disappeared overnight (in my company, we probably have 40 - 50 apps, and not a single source controlled project file).
I'm vastly more familiar with the JVM platform than .NET, but all these years later, I'm amazed to have today heard a .NET development team complaining about the annoyance of merge conflicts in csproj and other Visual Studio files. Really? In 2016?
I'd love for someone to enlighten me: is this a solved problem in the .NET space, but perhaps word just hasn't filtered to this particular team? Any advice, greatly appreciated.
Upvotes: 2
Views: 50
Reputation: 156524
This is actually a rather large pain-point in .NET, largely because .csproj files (and specifically the way that Visual Studio auto-manages them for you) typically create an entry for each and every file in the project. (Wildcards are technically supported, but Visual Studio tends to automatically replace them with large lists of files.)
I have never seen nor heard of generated project files being used as a way to avoid this. I imagine there would be some difficult hurdles to overcome, because Visual Studio requires the whole project to be reloaded if anything besides Visual Studio itself changes the project file.
ASP.NET Core 1.0 will go a long way toward solving this problem with their "project.json" files, which favor glob-style patterns for defining what happens to different files in the project. However, as far as I can tell, this is an ASP.NET-specific piece, and most library projects will still use .csproj. (I may be wrong on this, and would love to hear the experiences of people more familiar with .NET Core.)
Here's a feature you can vote for to get this fixed.
Upvotes: 1