Great fleas have little fleas upon their backs to bite ’em,
And little fleas have lesser fleas, and so ad infinitum.
And the great fleas themselves, in turn, have greater fleas to go on;
While these again have greater still, and greater still, and so on.
De Morgan: A Budget of Paradoxes
I always liked this quote, and anyone who ever wrote a recursive function has had it stuck in their minds on more than one occasion. K&R fans know it well also, and it speaks to this notion of containment – those good old nested Chinese boxes. Drum roll please… Now for the segue way…
I was working on finishing up my read of the The Build Masters, and I came across a little nugget that I wanted to pass along to our stalwart blogees. Here’s a little quiz: When your significant other peers over the top of their coffee mug at the breakfast table and says, “Honey, I am so deeply consumed by your incredible insight into computer matters, that I just had to know more about something you referred to during one of your rants, er, I mean discussions. Just what is a solution and project as it relates to Visual Studio? I’ll just burst if you don’t enlightenment through one of your brilliant monographs!”
So you push back from the table, inhale deeply, and prepare to shine the light of knowledge down onto the admiring family gathered about. But instead you say, “ I believe the whole matter was dispatched quite handily in short essay from the Build Masters, chapter 5, page 61, which I can recall from memory:”
“The best explanation of these files comes from Chris Flaat, a development lead in the Visual Studio core team:
Let’s start with projects. Projects can have an arbitrary set of configurations. Think of a configuration as a knob that tells Visual Studio how to build a project. The classic configurations are Debug and Release. For most users, there is no need to go beyond these. However, you might want to define your own project configuration if you want additional ways to build your project (say, with additional diagnostics built in) that don’t exactly map to what you want in a debug build or in your final release build.
Understand that a project configuration is a parallel bucket of settings. If you create a new project configuration that copies from the Debug project configuration, you are doing a copy, but any changes you make later to the Debug project configuration aren’t reflected in your copy. (The same principle applies to solution configurations. )
Now, what’s a solution configuration? Think of a solution configuration as a bucket of arbitrary project configurations. Solution configurations don’t have to have the same name as project configurations. A solution configuration is essentially a list of all your projects, where you pick which projects should be included and which configurations should be built. For a given solution configuration, you can pick arbitrary configurations for your projects.
Thank you Chris”
Again, thanks to the Build Master from Addison Wesley by Vincent Maraia.
So solutions and projects are containers, like those fleas and Chinese boxes. It’s all a matter of nesting one within the other. Chris Flaat did such a great job of explaining the concept, I had to pass it on to you all. So now that you have, yet again, demonstrated your superior knowledge and mastery of Visual Studio concepts, enjoy the rest of your coffee with the assembled family posse. And make sure to take most of the credit to maintain your position of ascendancy in the family.