Upgrading your VB6 app to .NET

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. If you are still struggling with the conversion, take a look at this article from

    Requires Free Membership to View

InformIT on converting from VB6 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 it's 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 thinking 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 build 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:

Read more about the differences between VB code and VB.NET at InformIT.

This was first published in June 2004

There are Comments. Add yours.

TIP: Want to include a code block in your comment? Use <pre> or <code> tags around the desired text. Ex: <code>insert code</code>

REGISTER or login:

Forgot Password?
By submitting you agree to receive email from TechTarget and its partners. If you reside outside of the United States, you consent to having your personal data transferred to and processed in the United States. Privacy
Sort by: OldestNewest

Forgot Password?

No problem! Submit your e-mail address below. We'll send you an email containing your password.

Your password has been sent to:

Disclaimer: Our Tips Exchange is a forum for you to share technical advice and expertise with your peers and to learn from other enterprise IT professionals. TechTarget provides the infrastructure to facilitate this sharing of information. However, we cannot guarantee the accuracy or validity of the material submitted. You agree that your use of the Ask The Expert services and your reliance on any questions, answers, information or other materials received through this Web site is at your own risk.