Leaving VB6 Behind
- Upgrading Your VB6 App to .NET
- Thinking in .NET
- What's Best for You?
If all your programming experience has been in VB, VBA, or VBScript, you may feel as though Microsoft left you behind with Visual Studio .NET. In some ways, you're right. Microsoft made a lot of changes to the VB language, to make it work with the .NET Framework. They did this for a very good reason. Rather than trying to hammer all the cool, new things in .NET into the existing VB model, Microsoft rewrote many aspects of the language to make it more modernized. To use a Microsoft phrase, "We wanted to make VB.NET a first class language," which is what—at least in my opinion—they did.
However, they had to change the way some things worked within the language. Much of the core syntax is still there, but the different way objects and errors are handled can confuse many VB-only developers.
I won't enumerate all the things that changed; there's already a really good MSDN article that covers this: Ten Code Conversions for VBA, Visual Basic .NET, and C#.
For something more detailed but light-weight (if that's really possible), there's a really great book published by O'Reilly called C# & VB.NET Conversion Pocket Reference. This $14.95 (SRP) pocket reference book has 139 pages of incredibly useful information on the difference between C# and VB.NET. It'll show how you would code the same task in both languages, with a brief explanation of each code block, pointing out "gotchas" to look out for, how the object-orientation programming models differ between the languages, and identifying unique features that are in one language but missing in the other.
Upgrading Your VB6 App to .NET
After the first release of Visual Studio .NET 2002, Microsoft was flooded with complaints and comments from the VB community that the transition from VB to VB.NET was difficult, despite what Microsoft's user acceptance testing showed.
In response, they created a VB6 add-in that will scan your VB project's source code and make suggestions on the best coding practices to make your transition to VB.NET easier. It's based on the VB Project upgrade wizard that comes with Visual Studio .NET.
If you haven't used the project upgrade wizard before, you're not missing much. What it does is try to convert all known VB syntax to VB.NET syntax where it possibly can. That includes things like converting Variant data types to Object data types, Integer data types to Int data types, attempting to switch any intrinsic controls with .NET intrinsic controls, and so on. What its not going to do is ensure your VB6 code will work with VB.NET. The wizard can't correct a lot of things, so it makes recommendations in the form of "To Do's" and "UPGRADE_WARNING" messages.
How do you run the wizard? From within Visual Studio .NET IDE, just open up a VB6 project and the wizard will fire up. Voila! It's just that simple. Some really simple projects convert just fine. However, watch out for the dreaded "Microsoft.VisualBasic.Compatibility" and "Microsoft.VisualBasic.Compatibility.Data" namespaces (or references) it may insert into your newly converted project. These libraries allow you to make VB6 method calls that were taken out of the VB.NET language. This is Microsoft's way to ensure some compatibility with legacy VB code.
Just like when it came time to upgrade Windows 16-bit application to be a 32-bit application, Microsoft tried to make it easy by offering a thunking layer that allowed developers to make 16-bit system calls from within their 32-bit environment. These compatibility references offer something similar. However, rather than clogging up your code with a mix between VB and VB.NET, you should ask yourself if you really need to upgrade the application to .NET.
If you answer "yes," then you'd better start doing some system planning and application rearchitecting. Don't just convert your application and building on whatever foundation you're currently on. You're better off reevaluating your application to work with the features that .NET has to offer.
Useful references: