VB Migration Partner with C# support has been in private beta for a few months: results and feedback have been VERY encouraging and we are now ready to make it available to all users!
Our last released version was 1.34, therefore this version should be 1.35, but we decided to jump to version 1.50 to emphasize the new C# support.
VB Migration Partner isn't the first or the only VB6-to-C# generator on the market, but for sure it features the most sophisticated engine for converting from VB6 to C#. Unlike our competitors, who still target older C# versions, we decided to generate C# code for Visual Studio 2010, so that we could take advantage of the many great features of this new version, such as optional parameters and the dynamic data type for seamless late-bound calls. The result is C# code that is far more concise, readable, and efficient that ANY OTHER tool that converts from VB6 to C#.
Here is a short and incomplete list of what VB Migration Partner 1.50 can do:
- converts VB6 optional parameters into either C# optional parameter or method overloads; as with all VB Migration Partner's options, you can set your preferences at the project, file, or method level, therefore you can produce exactly the code that you like most.
By comparison, other VB6-to-C# tools can only translate optional parameters into method overloads, which typically means more code to maintain in the future.
- convert Variant and Object variables into the C# dynamic type, which means better and concise C# code that doesn't rely on clumsy and inefficient helper methods to perform late-bound calls.
Unbelievably, two years after VS 2010 launch, our competitor still ignores that late-bound calls can and should rendered via the dynamic data type, and stubbornly generate a lot of code that relies on helper methods and Reflection to invoke a late-bound method.
- generates out instead of ref parameters if possible, thus allowing the C# compiler to generate faster method calls.
No other VB6 conversion tool has this feature.
- converts Select Case blocsk into either switch blocks (if possible) or if..else if blocks (in the most general case); switch blocks are preferred to if..else if blocks because the C# compiler can optimize them into jump tables, whereas if...else if blocks require that a given expression must be re-evaluated many times.
As you might have guessed, no other VB6 conversion tool can generate efficient switch blocks.
- can optionally generate method overloads to account for ref parameters that receive expressions and constant values; this feature alone dramatically simplifies the code that is needed to call the method.
By comparison, other VB6-to-C# generate tons of temporary variables for each method call, a technique that makes the code more verbose and in some cases generates compilation errors.
- it can generate an interface implementation either implicitly (with public methods) or explicitly, which helps keeping the object model tidy and elegant.
Other converters can only generate implicitly-implemented interfaces.
- convert an On Error Goto statement into a try-catch, with a warning if the try-catch block isn't perfectly equivalent to the original VB6 code.
Other converters do the same, but never emit a warning.
- convert an On Error Resume Next statement into a series of lambda expressions, with you deciding whether this option is applied at the project, file, and method level.
Other converters offer this feature only at the project level, which gives you no control about where the conversion should or shouldn't be applied.
- refactor Gosub calls into separate private methods.
No other converter has this important feature, which VB Migration Partner has since 2008.
- gives you control over which .NET methods should be used instead of helper methods (defined in the support library), and where the replacement is OK.
Other converters provide this option only at the project-level, which often leads to a behavior that isn't equivalent to the original VB6 code.
- convert from ADODB to ADO.NET, including support for server-side SQL Server cursors, thanks to our ADOLibrary.
No other convert even comes close to this!
As if all this weren't enough, remember that VB Migration Partner 1.50 generates C# project that use our feature-rich support library, which perfectly mimics the VB6 behavior and prevents you from wasting weeks or months trying to duplicate the behavior of the application being migrated. This includes full support for graphic methods, drag-and-drop, data-binding, weird Windows API methods, subclassing, etc. What can you ask for more?
VB Migration Partner 1.50 Beta is available to all registered users, together with white papers that contain tips and recommendations for whoever wants to convert VB6 projects to C#. We are in the process of updating all our online docs.