A client contacted us to understand why is the VBUC a paid tool when there's a free conversion tool (Visual Basic Upgrade Wizard or VBUW) available in old versions of Visual Studio. Moreover, the client wants to convert their application to C#, and the free tool generates only VB.Net.
I'll address the differences and the advantages of using the VBUC when comparing it to the VBUW and also when using a separate tool to generate C#.
What is the VBUW
The Visual Basic Upgrade Wizard is a tool that shipped with the first few versions of Visual Studio .Net (From the initial Visual Studio .Net to Visual Studio 2008).
First of all, you might be surprised to know that our company actually built the VBUW for Microsoft.
Back in 1999 Microsoft was looking all around the world for a company with the right technology and skills to build a migration tool from their very popular VB6 platform to their brand new .NET platform. They found this company in Costa Rica called ArtInSoft and funded the creation of the VBUW to ship it with Visual Studio.
ArtInSoft became Mobilize.Net back in 2012 but kept the same technology and engineering team.
The VBUW was useful but quite limited in a lot of aspects. That's why the original team decided to build the Visual Basic Upgrade Companion and has continued evolving it over the past 20 years.The following is an extract with the most important topics.
- Support. As a 20 year-old tool, the VBUW has no support whatsoever, while with the VBUC you'll have access to our team of expert migration engineers.
We can also help you execute your project.
- C# Generation. The VBUW generated only VB.NET while the VBUC directly generates C#.
The generation is native, so there's no intermediate VB.Net step and in some respects it might be even better than the VB.NET generation since most of our clients prefer C# as the target and thus the testing of the tools is mostly done in C#.
- Multi-project support. The VBUW can migrate a single project at a time. This might be acceptable for small applications but most enterprise systems comprise multiple applications and libraries that interact with each other.
The VBUC supports the migration of multiple projects at a time, resolving internal references and correctly using the correct namespaces and even handling shared files. This can save thousands of hours of manual work for large systems.
- Third-party libraries support. The VBUW left all references to third party libraries and controls as COM Interop references. The VBUC has support for dozens of libraries and hundreds of classes commonly used in VB6 applications. These include:
- MSADO and DAO
- Sheridan Controls
- Component One
- MS XML
- Many more
- New .Net Features. The VBUW was last updated around 2003, while the VBUC is constantly updated with every new project our team executes. These updates include general enhancements and bug fixes as well as support for new third party components and new language features such as the use of the DLR for dynamic components.
We're also working in the support of .NET Core 3 which should be released later in 2020.
Here's a blog post from over a decade ago comparing the tools in depth.
We also have a downloadable PDF with a comparison of the two tools.
And here's a list of the release notes from the latest VBUC releases.
Convert VB.NET to C#
Part of the plan of this client was to use another tool to convert their VB.NET code (generated with the VBUW) to C#.
There are a few tools that have some kind of support for VB.NET to C# conversion, and they typically fall into two categories:
- Decompilers. These take compiled VB.NET code and use the IL to generate C#.
Typically these have some limitations such as:
- VB.NET-specific components are not migrated (Like unstructured error handling)
- Comments are not maintained.
- Constants are resolved to the compile-time value.
- Syntactic migrators. These work slightly better but are typically paid tools and also have limitations with VB.NET-specific components.
We have used a couple of these tools in the past for VB.Net migrations when targeting a Web platform (as an initial step for a WebMap migration) but we ended up creating our own migration tool from VB.Net to C# to meet our needs.
Depending on the size of your application, by using the VBUC you should save hundreds or thousands of hours even if you want to target VB.NET. The VBUC also generates better code using more modern libraries (the VBUW is almost 20 years old).
If you add the second jump to C# it should be a no-brainer to use our tools.
Also, let us know if you have VB.NET code that you want to convert to C#. We typically do it for apps going to the Web, but the tool is general-purpose.
As usual, contact us if you have any questions about our products and/or services.