Visual Studio Projects and Solutions Mess

I submitted a bug in ladybug regarding how much Visual Studio messes up all the time the two different assets Solutions and Projects in menus and dialog boxes.

 

I got a response from Chris Burrows (from the VS Team, I guess) telling me –sadly enough- this is “By design”…

 

Of course, I still think Visual Studio is totally messing up the Project and Solution terms, and that such core concepts should deserve a bit more of attention; here goes my view on it so you can take a look and make your own mind (and let Chris now in the process J).

 

Opening

 

There is a single option for both projects and solutions: File->Open->Project/Solution…

 

prjAndSln01

 

Which is good… it’s acknowledging the fact that Project and Solutions are two different types of assets and that you can open any of them by using the same option. So far, so good.

 

So you select the mentioned option above and you get an “Open Project” dialog:

prjAndSln02

But wait I minute… I just said I wanted to open a Project or Solution and not just a Project… Let’s write this one down so we can pass the feedback to the VS guys later: “Inconsistency #1: The title bar for the Open Project dialog is misleading”.

                            

No problem, a misleading or outdated title bar won’t stop us. Let’s do a little of “play-with-the-UI-while-guessing-things” and get to the Files of type field:

 

prjAndSln03 


What is the first option in there?

 

All Project files (*.sln; *.dsw; etc)

 

Humm… I’m confused now… so a solution file is a file belonging to a project file? Like a C# Project? Or by “Project” this time you don’t really mean a Visual Studio Project but a company project which may include one or more solutions containing one or more projects each? Looks like the second case to me J -- so let’s add another note for the VS team: “Inconsistency #2: Hey guys, what exactly do you meant by putting Solution files under All Project files option?

Luckily enough there is a second option named “Solution Files (*.sln)”, now this one really looks like what we’re after, so lets point to the solution we want to open and… humm… what these radio buttons I’m getting to the right of the solution name really mean?

 

prjAndSln04 


Can I have nested solution in Visual Studio? (thinking… thinking… thinking…)

 

Not really, what the “Add to Solution” option really means is that you will get a merge of the specified solution and the opened one. Nice touch, ugh? (btw, anyone on planet earth did know about this?).

 

And “Close Solution“ of course mean closing the currently opened solution before opening the one you’re specifying in the dialog… no one in his *right* mind would think that you’re using the same dialog to currently open AND close the same solution at the same time, right? J  At any rate, let’s add another feedback point: “Inconsistency #3: Guys, maybe you want to clean a bit the text so no ambiguities are left”.

 

Creating

                                           

Ok, maybe the Opening-side of things is a little misleading but does the Creating-side get any better?

 

Let’s create a solution!

 

prjAndSln05 

 

Humm… I would swear I got a “Projects/Solution…” option when using the Open operation… but now I’m getting just “Project…” for the New operation…  Time for another note: “Inconsistency #4: Open option uses Projects/Solutions while New doesn’t”.

 

Well… maybe this time I get the opposite that I get when executing the Open command and now the dialog is titled “Project/Solution” but the menu item is not… who knows… lets check…

 prjAndSln06


No luck this time…

 

But wouldn’t be just too easy and boring if you just had to select New Solution in order to create a new solution? Anyway. Most probably this is just a challenge from the VS guys for us and there should be a way to create a new solution from the New Project dialog…

 

(thinking… thinking… thinking…)

 

(tons of “play-with-the-UI-while-guessing-things”)

 

(even more tons of “play-with-the-UI-while-guessing-things”)

 

Found it!!

 

prjAndSln07


Actually it was pretty easy; I only had to navigate to:

 

New Project -> Other Project Types -> Visual Studio Solutions -> Blank Solution

 

I’m pretty sure you can easily notice the morphing from a Project to a Solution here… hey… it’s natural: after saying “project, project, solution, solution” you get the last one!!

 

Feedback #5: Please don’t make me navigate that much to create a solution.

 

Recently used Projects (oh! and solutions too!)

 

In this modern age you know about every program now support a Most Recent Used (MRU) list and of course Visual Studio is no exception to this rule.

 

But as you may have guessed already there is a small gotcha tough… you may go look for recent projects and end up with a list of recent solutions:

 

prjAndSln08 


Of course if you had any recent projects they may list there too, because what “Recent Projects” really means is “Recent Projects/Sol
utions
”… but you have guessed this for sure so far…

 

28 Comments

  • Wholeheartedly agree!!!

  • Yeah, I don't know what they had in mind when creating all this.

    Especially, why does it have to be so difficult to create a solution while this is the first thing we have to do on every new project...er...application :-)



    What we can deduce is that:

    - a solution appears to be a second-zone citizen

    - the notion of solution was not in the plan when the menus/GUIs were defined

  • Really enjoyed the commentary ;)

    It's exactly these kinds of things that cause me to dread upgrading to 2.0

  • Well a project is just an MsBuild project and a solution should have been ( was going to be? ) just an MsBuild project too, but they didn't finish it or something or something.



    The only one that I keep banging my head against is the "new empty solution". Is there sommething wrong about creating a solution with a name then adding 1 project with a different name :P

  • I am convinced that alot of these types of similiar issues that are coming out of Microsoft are due to the fact that they are being written by guys that don't actually use it or have to deliver real world solutions with it. It's like having book knowledge and no real experience. Not all of it is this, but I have notice this trend of late ...

  • I am agree!!! It´s very easy!!!

  • Oh, and their is the completely broken visual inheritence... possibly the most efficient way to develop winforms applications that they essentially just turned off in VS.net 2005 instead of fixing the whole thing to make it work right like they should have done in .net 1.0

  • ////////////////////////////////



    Poor menu labeling/navigation is a common problem throughout the MS product line and will only get worse over time. This is because development of software is occurring by offshore firms whose staff have English (especially US English) as a second language.



    What's intuitive to US programmers is often very different to those who speak a different first language.



    Somethings are just lost in the translation.



    \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

  • Thank you so much for pointing out how to create a new solution! I used to know how to do this in Visual Studio 2003...

    If you want another example of project / solution idiocy try this. Create a blank solution and then add two projects to it, save and close. Now try to open either of the two projects. Instead of the project opening the solution that you added it to opens instead! This becomes a real pain when you have solutions with many projects and just want to look at a project by itself, or add it to another solution...

  • Have you ever double-clicked a project (.vcproj) and instead of the project, the whole solution opens? What a pitty if you have two solutions which contain the same project - it will most probably open the solution which you're currently not work with.

  • Ah, and I forgot the configuration manager!
    Lets assume your C++ project has a "Release MinDependecy" configuration but your solution uses C# and only has a "Release" configuration.

    When I try to build the C++ project with /rebuild "Release MinDependecy" /project I get the error "Invalid solution configuration".
    But if I try to build it with the solution configuration /rebuild "Release" /project it says "Configuration 'Release' not found". So now I cannot build my application by a build script any longer.

  • This is really annoying me too. I have a web site and a class library as two seperate projects. I would like to use them together as one solution. I have tried creating a "new blank solution" (thanks for pointing that out in your blog posting). Then I right click the soluition in the solution explorer to "add project" to add the class library to the solution... It does add the class library but the top-level soluition disappears and the 'solution explorer' appears to have transformed to a project explorer (but still called solution explorer) - how do i get the top-level solution back?? Also how do I add a web site to a solution? Its mind boggling that Microsoft claim this is "by design!!" - I've been trying to work this out for two days solid now - someone at MS has f&cked up bigtime on this one.

  • There's an option which clears some of this up...

    Tools -> Options : Projects & Solutions/General -
    "Always show solution" (disabled by default). If you enable this the top-level solution is always displayed and it makes it easier to work with multiple projects within a solution - why this is disabled is beyond me, its caused me such a headache!

  • Kevin Mullen,

    Thanks for pointing out that option for "Always show solution". That clears up a lot of confusion! It's also beyond me why this is disabled by default, or even an option.
    In my opinion, it's fine if they want to require that a project always be a member of a solution container, but their apparent attempts at trying to hide the solution level container just makes everything confusing.

  • Oh, it gets better.

    In Visual Studio 2005, if you create a new solution, that doesn't help you any. Right click on the solution, and add a project. What what happens.

    Your solution is now gone, replaced by a project! So much for creating a multi-project solution! This design is horrid. I've spent the last hour trying to create a multi-project solution, and all the help pages and MSDN pages are either out of date or use instructions for non-standard Visual Studio 2005 installs.

    Luckily, the May 28th post by Kevin shows how to do it. Tools->Options ->Projects and Solutions->General and check "Always show solution".

  • Need to be more elaborative

  • Faaark, no wonder i'm confused! I used to really like MS products, but as they get more and more annoying with each release, I've come to dispise them.

  • Hehe, nice article!
    Unfortunately indeed, MS is bad at designing and naming (admitting the mess is 'By Design' is really admitting that the design sucks somewhat) and history proves this is only growing until they find something they're good at.
    Oh wait, they're good at marketing. ;-) Makes sense, since calling something a Solution is a marketing name, not something a programmer would/should come up with.

  • Hilarious, however reading your article I found my solution (got it ehh :)).
    No I really did get to know how to create a solution file for a given asp.net website.

    One thing I'm still confused about however is that I can't seem to tell when to use;
    ASP.NET Web Application
    and
    ASP.NET Web Site

  • I'm at VSLive conference. The short of what Jeffrey Palermo (I think??) said today was to always use ASP.NET Web Application. That's because Website project (= "Web Application" referenced above, I suspect?) is the lite way to create a web project, with the following deficiencies - doesn't allow for versioning of your code and will mess you up in source control if you ever exclude a file from solution, because the system renames the file with suffix ".exclude" (hence confusing source control greatly).

  • I am the PM for Project and Build. Do you mind if I copy the material listed above? No promises, but I would like to track this for a future release.

    Thanks,

    Chuck England
    chuckeng@microsoft.com

  • Please be my guest!

  • Would things have been better if Microsoft had chosen Private Solution (A.K.A. Project) and Public Solution (A.K.A. Solution)? Had they chose this naming format, people would have then complain about that. I think the bigger issue is that Microsoft does a very poor job of getting good introductory material into the hands of the developer. Where, just show me where, Microsoft has explained that a solution is not a container for projects but really just another type of project? Where do they tell you it is a project intended to be the final product you give your end user? Where do they tell you that every project has a solution file that gives it the ability to be a solution if you so choose for it to be one? Having now built several projects and solutions I’m realizing that everything is a project. It’s just that some projects are private building blocks that sometimes use other private building blocks. While other projects are solutions that use private building blocks (A.K.A. other projects) to build a final product for an end user. What you call it is almost trivial. How you us it is important thing!

  • Thanks to all who posted on this thread... Some helpful information there for sure, but still, this TFS/VS stuff is a completely overly-complex pile of warm cow dung, and just about as useful.

    WHY cant Microsoft make anything that isnt over-engineered and needlessly complicated!!!

    Indeed, I too am one of those who contacted MS for support and if I hear the phrase again; "by design" I think I will shoot myself. Of course, in Microsoft world, if you ask them to build you a submarine, they deliver a jet liner and when you complain about it, its all "by design". In other words, they dont have a flipping clue!

    I have spent more time in recent years just trying to figure Microsoft products out, than I have using them - now THATS software productivity!

    May God please deliver a major earthquake to Redmond Washington - lets turn it all to rubble and start over again with something that Microsoft has never even had one grain of...

    Common sense.




  • Thanks broski, I can't believe I had to google something so basic that should be intuitive.

  • Kevin Mullen, u rok! Thanks for the help. I was getting pretty frusterated till I read your tip!

  • Sadly we are now writing year 2010 and your grief from May 2006 is still valid. And you have only mentioned a small part of the mess MS have made with these concept.

    Seems that no one at MS understood the concept, but they all agreed that Solutions, Projects and Applications was a good idea.

    The VS users has spent millions of $ strugling with this structure and the naming default mechanisms.

  • I have used eight or so IDEs in my career and none of the others were quite the "kick in the head" that Visual Studios is. You would think that with all the programmers at Microsoft that Microsofts IDE would be first rate instead of trailing the pack.

Comments have been disabled for this content.