Microsoft has posted an article called Top 10 Reasons to Upgrade to Visual Basic .NET. Here are some comments about there reasons.
Before they even got to the reasons, the article says:
Visual Basic .NET delivers the top requested features built for today's Visual Basic developer:
I'm not at all convinced it delivers the most requested features. Many features (for example, the new ways for manipulating files) seem more like the way Microsoft's C programmers thought file I/O should be done rather than the way VB6 programmers were asking for it to be done.
Anyway, here's the list in brief:
- Seamless Deployment. VB .NET promises to end "DLL Hell" and it may. I haven't experimented with it much yet but I've heard mixed reviews. Probably it will be better once we're used to it. It can't be a whole lot worse.
Of course, the "XCOPY deployment" where you simply copy the files onto the target machine only works if the .NET runtime DLL is installed.
- More Robust Code. The features they list here are the real-time background compiler (to check syntax as you type) and the task list. Neither of these is a big step beyond VB 6. They also list strict type checking (which is good) and structured error handling. Structured error handling is really just more like the way it works in C/C++. It has some advantages but also some big disadvantages such as no Resume statements and no On Error Resume Next capabilities.
They don't mention all the new classes that come with VB .NET for doing things like file I/O, XML manipulation, etc. By thoroughly encapsulating these features, the classes do make your code safer... once you figue out how to use them.
- Powerful Windows-base Applications. This isn't a real big deal. They point to the Form Designer (we've always had that), control anchoring and docking (replaces straightforward code with confusing design time properties), in-place menu editor (the old one was fine), and the tab order editor (a nice but tiny feature).
- Powerful, Flexible Data Access. They say VB .NET provides ADO and ADO.NET. Actually it looks like Microsoft is trying to dump ADO. ADO.NET does have some nice features, but it's aimed strongly at Web-like program structures where database users never interfere with each other. Record locking doesn't work as it does in ADO so building a traditional desktop application for multiple users requires some trickery.
- Simplified Component Creation. The Toolbox now includes more non-visual components (sort of like the Timer control) for things like database connection, DataSet, message queues, etc. It's not hard to create these objects in your code. Putting them on the form lets you do a bit more design-time configuration for them so this isn't a bad thing, it's just no big deal.
- Enhanced Control Creation. They don't say much here. It's true that VB .NET lets you build user controls. I haven't seen any big advantages over how it works in VB5/6 but I haven't spent a huge amount of time on this. One BIG disadvantage is the user control object (and the PictureBox and Form for that matter) no longer have an AutoRedraw property. If you want AutoRedraw, you need to implement it yourself with your own bitmap buffers.
I believe you CAN make a control that inherits from an existing control. That's cool.
- Complete, Direct Access to the Platform. This just means VB programmers can use the .NET Framework. That gives access to the registry, event log, performance counters, and file system. What this means in practice is you use new classes to do stuff that you would have done using API calls before. A nice feature but nothing you couldn't live without.
- Integrated Reporting with Crystal Reports (Professional edition and above). This lets you manipulate Crystal Reports within the IDE. I suppose you might care if you use Crystal Reports a lot.
- Easy Web-based Application Development. Web Forms let you build Web-based applications easily. I haven't done a lot with this because I don't do much of this. The focus on this kind of development has taken away from more traditional desktop development which is what I do most (and I think most other developers do most).
It's ironic that they explicitly mention separating the user interface and implementation code to "enable more efficient team-based development" when in other places they emphasize the close ties between the IDE and the development effort. The next logical step would be to use resource files for everything. That's cumbersome if you don't need them for internationalization or some other specific purpose.
- Existing Investments Carry Forward. This is just MBA-speak for "if you already know VB, you don't need to learn C++." I know a lot of VB6 programmers are looking at C#. The reasoning is, "As long as VB .NET is practically a new language anyway, why not go all out and learn C#?" Other developers realize, "If I have to learn a new language anyway, why should I learn a proprietary Microsoft language like VB .NET or C# when I could learn Java or C++?"
Obviously Microsoft hopes you will stick with VB .NET or move to C#. Personally I would rather move to C++ than C# or Java. Let me point out, however, that for all the differences between the languages, VB6 has a LOT more in common with VB .NET than it has with C#, C++, or Java. It will almost certainly be easier and faster for you to move to VB .NET than to one of the other languages.
This paragraph also says, "The upgrade wizard enables developers to seamlessly migrate up to 95 percent of existing code to Visual Basic .NET." I think they dropped a decimal point and meant 9.5 percent ;-)
But seriously folks, I think the marketing people are counting extremely simple lines of code, comments, etc. When I've used the Upgrade Wizard, it has never produced a result that would run without at least some modification. Many of the changes are simple once you understand what's going on, and with a little thought you can understand why the Upgrade Wizard cannot figure out how you want something translated. Saying you can seamlessly migrate up to 95 percent of the code is misleading. Most developers who have tried migrating applications regard moving to VB .NET as a port not a simple upgrade.
The article makes no attempt to address people's complaints (such as the fact that reverse engineering .NET code is easy). It also doesn't mention the fact that performance is better than VB6 and it doesn't talk about any of the new and useful class libraries.
If you have comments or rebbutal, email me.