Christian Heilmann

First impressions of Visual Studio 2005

Friday, January 20th, 2006 at 12:06 am

I just attended a Microsoft partner course “Whats New in Microsoft Visual Studio 2005 for Existing Microsoft Visual Studio .NET Developers”, mucking about for three days with the new VS.

Here are my first impressions, which might have to be taken in with a pinch of salt, as I haven’t used the full product in a project yet (the one I am currently involved in uses Java Spring) and I haven’t played around with all the options it has. Furthermore, I am a purist and keyboard shortcut junkie when it comes to IDEs (chant ‘Weirdo’ now).

First of all: Microsoft kept their promise – ASP.NET 2.0 and VS 2005 does not muck around with our code as much. Sadly enough it offers the developer many options to do so instead.

Microsoft have taken a leaf out of other company’s books and blatantly ripped off introduced some features that have proven handy in other tools and IDEs:

  • snap-to guides for the visual editor of win forms
  • code snippets (how come it took MS that long to realize they are really handy?)
  • XML editing, Schema generation and validation
  • Visual database designer showing relationships between tables
  • Page templating via masterpages
  • Option to skin controls and whole sites

New controls, login and membership tools, so-called Smart Tags – shortcuts to commonly changeworthy properties – make it really easy to create rapid prototypes. Even inexperienced .NET developers like yours truly can create a sort-able, edit-able and search-able web application from a database in half an hour flat. The skill then is to explain clients why the real – tested – application will take two weeks minimum to develop.

The all-in-one editor approach really could save you money, as you don’t need many bespoke editors any longer (personally I really think XMLSpy for example was far too overpriced for the few things you use it for as a normal web developer).

One thing I really liked is that VS 2005 comes with an own lightweight server to preview the ASP.NET web sites. No more mucking about with IIS and changing settings when jumping from project to project (which can be especially annoying when you are in my situation where projects have different technologies and you do constantly have to stop/start Apache, Resin, Tomcat and IIS respectively). Another new feature is an admin web site to control the web.config file, which is really handy, especially as it does contain a site user control panel with member management – and how many times have we created that ourselves?

The IDE now also allows for building, debugging and running the projects without much ado, you can even edit while debugging, which decreases development time immensely. The new colour coding showing yellow, red and green states for lines changed, changed but not saved and changed and saved can help to quickly see what changed but personally I started blocking that feature out quite quickly.

The refactoring tools VS comes with are amazing. It is really easy to convert old clunky code to slicker OOP styled code. If you are a C# developer who has to deal with a lot of third party code you will love these options.

Enough about the IDE and its features for .NET developers, on this blog I am normally sticking to web standards, markup, CSS and JavaScript and in that aspect, things have become a lot better, but it is not hard to get closer to web standards when .NET 1.1 is the standard to compare yourself with.

The first thing that annoyed me immensely is that you can choose which browser to support. I understand that from a project delivery point of view this is a good option – you still do define the browsers to support after all, but the idea should be to support standards, not browsers. And if choosing a browser means adding a lot of bespoke code for that user agent exclusively then we are back to square one in terms of browser wars (it is now up to you to guess what browser is favoured when it comes to bespoke features).

The new master pages are a 1:1 equivalent of Dreamweaver’s templates, and are as handy, so nice job on that one – albeit some years too late.

The problem about VS is the visual part – you can choose the look and feel of almost any control you dragged onto the designer – and the final rendered code will have inline styles applying these visuals and thereby overriding any styleguide that was defined and applied in a global style sheet.

The same applies to the skinning options – which are actually quite ironic. As web standardistas we loved to say good riddance to presentational elements and attributes, and now MS re-invents the font tag in a new disguise: .skin files. In essence, you define the control tags as a .skin file and add the look and feel as attributes. For example an H1.skin file in the same syntax would be

and render out as

. Seriously, there is a standard to define the look and feel of markup – even if it is generated – and that is called CSS. I will look into this more closely and I sincerely hope there is an option to define class names to apply to controls instead of these visual attributes.

From a usability/accessibility point of view things still seem to be rather dire. The only example I tried out was generating a navigation from the newly introduced sitemap file (an XML node tree with page/link data). You use the list control to generate a nested list, and lo and behold – there is no current state! The current page stays a link, and I haven’t found a way to change that.

When I turned on the accessibility option “skip link”, VS generated a 0×0 pixel image with the alt value of “Skip this navigation” pointing to the ID of the main section. This does not help any keyboard users and will not even be read out by the newest screen readers.

The demo material used tables for layout and looked rather grim, using large background images instead of text content. It did not cover any of the accessibility options built into the app, and out-of-the box the new grid control still creates “javascript:” links even when JS is turned off.

That said, I have yet to check the material on the accessibility enhancements, I might just not have delved into the matter enough.

To summarise: It is a great tool, but it smacks a bit of too many specialized IDEs merged into one. It assumes that the developer does know what he is doing in any of the aspects of development – database, C#, HTML, CSS, JS – and those developers are rare (I suck at DB design and only meddle with C#). It even stands in the way of parallel development or proper separation of web design layers – the IDE offers too many options for the C#/VB.NET developer to override the styles that have been agreed on with the client beforehand. It is very tempting to just give in and create sites and applications that look like everything else in Windows and only work properly on MSIE – but not too many clients are happy with that.

Share on Twitter