Eight things I hate about Visual Studio 2005

While Visual Studio is quite a capable IDE it isn’t perfect – here is my personal top 10 list of things I hate about it. I’ve kept the gripes to the IDE itself – the issues I have with .NET Framework deserve a post of their own some time.

1. Go To Definition does not work between languages

Sometimes your solution has to be a mixed language one – you know the odd VB.NET class library that nobody wants to rewrite in C#.

Hit Go To Definition on a call to this library however and you won’t find yourself there in the VB.NET code – oh no it’s straight to the Object Browser for you.

2. IntelliSense ignores aliased name spaces

Name spaces were introduced to help reduce name collisions but occasionally you need to use both classes with the same name. You get two choices in .NET – you can either fully-qualify them making your code incredibly verbose and difficult to scan through or you can use an aliased name space – e.g. using SNM = System.Net.Mime;

Annoyingly IntelliSense will always use the fully qualified name even if you start with the alias. Typing SNM.ContentType content = new will trigger off IntelliSense to unhelpfully suggest System.Net.Mime.ContentType().

3. Dependent-upon project items aren’t usefully exposed

.NET 2 brought partial classes to the table and Visual Studio made a stab at using them for the Form designers by sticking the generated code in a .Designer file that nests below the file in the Solution Explorer.

This is achieved by the .Designer file gaining a <DependentUpon> tag to link it to its owner. If you want to use this for your own generated files you’d better get used to editing project files in Notepad because the IDE won’t help.

4. The SDK/AddIn API is awful

If you feel like addressing any of the shortcomings in Visual Studio you can extend it using their SDK which allows you to write your own AddIn – providing you can get your head around the most obscure and awful API ever.

5. Not all project types support automation

Some of the less popular project types (e.g. Database) don’t support the parts of the automation API they are supposed to.

This means if you’ve managed to get your head around the SDK you now find all your hard efforts don’t always work.

6. The syntax editor does not support italics

Why oh why doesn’t the syntax editor support being able to italicize a font? I’d much prefer my comments displayed in italics. If Borland’s Delphi supported it in the 90’s why can’t Visual Studio 10 years later?

My Envy Code R programming font fakes italics for use within Visual Studio!

7. Document tab area doesn’t like staying still

The document tab at the top of the screen is where you switch between the various documents. The only problem is it jumps up and down depending on how many tool bars as standard the designer/editor for that file type has so you switch once and then end up hitting a random tool bar button if you quickly decide to move on to another file.

8. No re-distributable elements

Want to put syntax highlighting in your product? Better go buy some third-party components.

Visual Studio style docking? Third party-component.

Sure you can license the basic Visual Studio IDE for your own languages and code – providing you have very deep pockets.

Wrapping it up

I’ve downloaded the January CTP of Orcas but I doubt it will address any of my bug-bears.

What would be cool is an open-source IDE for .NET development written in .NET that exposes the syntax highlighter and parser trees with a much better plug-in system and the Office 2007 style ribbon.

I wonder how the SharpDevelop guys are getting on…


6 responses

  1. Avatar for Rik Hemsley
    1. It's slow. I'm on a pretty fast machine with plenty of RAM and it still takes ages to do simple things which I do a thousand times a day, such as switching from source view to design view. It takes it several years to load up a solution when it gets larger than 20 lines of code. It takes so long to load the help that you can get there faster by switching to your web browser and searching via Google.

    2. The 'website' MSIs it builds are pathetic. Of course, no-one would want to distribute an ASP.NET application, would they? Silly for even thinking of it!

    3. It doesn't support Subversion. There's AnkhSVN, which is too buggy for my liking, and VisualSVN, which is great, but doesn't let you add code (!)

    Probably many others but I've had enough of fighting with VS.NET today and am going home.

    Rik Hemsley January 18, 2007
  2. Avatar for Trey

    Rik ...I had that same problem. If in your bin folder where are references to external files, you may try deleting their corresponding .refresh files (mine sped up significantly).

    ...and a 463MB SP??? ...that's a new application ~8^T

    I have seen some better performance post-VS2005 SP1

    Trey January 18, 2007
  3. Avatar for Steve

    Ok, I'm a native-code C++ guy but I'll have my say too :)

    1. Fragile manifest embedding process can cause problems if you build on a FAT32 drive (e.g. for cross-platform access), and the option to fix it isn't the default despite it being almost cost free and the symptoms being hard to understand

    2. Code completion / cross-referencing still isn't rock-solid in C++, you have to use 3rd-party plugins to make it work well.

    3. They still haven't fixed the .obj file corruption if you halt a build at an unlucky time, meaning you have to go delete it yourself

    On the document-swtiching, I prefer to use CTRL-F6 (loop) or CTRL-TAB (pop-up selection) rather than the document tab bar, because the tab bar really doesn't have enough space.

    I really miss Eclipse's source navigation features - like CTRL-F3 to bring up a context-sensitive nav pop-up which allowed you to jump to methods / blocks in the same file (if caret is on whitespace) or the definition / members of the symbol the caret is resting on. Super-fast keyboard-only cross-document navigation, and foolproof autocomplete. Genius. And VS still has nothing to compare with Eclipse's CTRL-1, which broadly meant 'fix error using the recommended approach'. Surprising how useful that was since most of the time it was typos or missing imports. Eclipse is still my favorite IDE, although it's not much use to me for C++ work since the tools for C++ aren't a patch on the Java set.

    Steve January 18, 2007
  4. Avatar for Rik Hemsley

    Was going to mention these earlier but ran out of time:

    Italics aren't really possible to do nicely if you're using a fixed width font. Most people do, so that's probably why they don't bother with them.

    ReSharper's own brand of IntelliSense works quite well, though like the built-in version, it's not perfect.

    Regarding point 7: I stopped using the 'x' button to close code/design tabs. I now use :q to quit (asking if I want to save) or ZZ to save and quit. This is because I'm using ViEmu. I'm not sure what the 'normal' shortcut for closing a tab is. It doesn't seem to be Ctrl-W, which is what I guessed at.

    Rik Hemsley January 19, 2007
  5. Avatar for Rik Hemsley

    Trey, I don't seem to have any files with the word 'refresh' in their name.

    What's this about a 463MB SP?

    Rik Hemsley January 19, 2007
  6. Avatar for knockNrod

    Check out TortoiseSVN and Visual Studio Integration

    Not the perfect solution, but not solid. It's the TortoiseSVN Visual Studio integration tool, which creates a new menu inside of Visual Studio (via a vssettings file). I'd still like to see some tie-in with the API to show which files have been modified so I know when to update the repository, but it makes subversion's use inside of Visual Studio palatable.

    knockNrod December 20, 2007