We all know Add Reference is horribly broken in VS2008. We’ve all clicked it and had our hearts sink as we realised it was time to make a brew, grab lunch or take a weekend mini-break before even attempting to use Visual Studio again. Now VS2010 is in Release Candidate it’s obviously been fixed.. hasn’t it?!
Not All Change Is For the Better
The main issue with the VS2008 Add Reference dialog was that it took an age to load, mostly due to it enumerating all of the assemblies available to populate the .NET tab. If all you wanted to do was add a project or file reference you still had to wait for it to finish building the .NET tab. Not good. In an attempt to fix the problem Microsoft has made two major changes to the dialog for VS2010:
- The dialog now defaults to the Projects tab.
- The .NET tab is now multi-threaded i.e. it loads types in the background.
The first of the two fixes is an excellent idea. If you want to use the Projects, Browse or Recent tabs then you don’t even need to look at that snail-paced .NET tab.
The second of the two fixes is horrible. Truly horrible. I’d even go as far as to say that if you actually want to use the .NET tab to add a reference then it’s actually *more broken than Visual Studio 2008*. Yes, I did say that. And I’ll say it again:
“If you actually want to use the .NET tab to add a reference then it’s actually more broken than Visual Studio 2008.”
To illustrate the point, lets say we want to add MEF, which sits in System.ComponentModel.Composition to our application, we’d probably do something similar to the following:
- Click Add Reference.
- Marvel at how quickly Add Reference Loaded.
- Click the .NET tab.
- Watch the first few items start to load up.
- Type “Sys” to jump down to System in the list.
- Go to select System.ComponentModel.Compo..oh no.. it’s moved.
- Scroll down, go to select Sys.. nope.. it’s moved again.
- Scroll down a bit more, click on.. nope, gone again.
- Wait until the thing has fully finished loading and then select what we want.
So what we have there is the same delay as it would have taken with VS2008, but with the added “fun” of playing a game of “chase the reference down the listbox” in a vain attempt to save yourself a few seconds.
Could It Be Done Better?
Now I’m no User Experience expert, or an Interface Designer with a fancy job title, but couldn’t this be improved immeasurably with a simple filter box?
Perhaps I work in a strange way, but I never start searching for a reference using the mouse – I *always* type the first few letters to skip to roughly where I want to go. If we had a simple filter box at the top of the dialog then the “chase the reference” game would be massively reduced, and probably eliminated all together if you’d typed in enough of the namespace name:
Maybe I’m just picky.