I was struggling with trying to figure out why a certain solution of mine wasn’t starting right.  It was in VB with four projects.  Upon initial open it would set a certain project with a DLL output as startup.  If I set the EXE as startup project, it was fine, but when I distribute code I always clean it by removing *.suo and *.user files, and bin/obj folders.  Upon opening the “cleaned” version, it would always revert to the DLL project and fail to F5 nicely.  The fix turned out to be simple, though I’m curious as to why I needed to do this at all.

In the solution file, there are a list of pseudo-XML “Project” entries.  It turns out that whatever is the first one ends up as the Startup Project, unless it’s overridden in the suo file.  Argh.  I just rearranged the order in the file and it’s good.

I’m guessing that C# is the same way but I didn’t test it.  I hope that this helps someone!