Converting a Visual Basic 6 business application to the .NET Framework platform
is a slow, costly, and error-prone job that requires a deep knowledge in all the
subtleties of both VB6 and .NET languages. While automatic conversions tools previously
available on the market can help, they fail to significantly simplify this process
to the point where it becomes truly cost-effective. Not surprisingly, many software
companies have postponed the decision to migrate their applications to VB.NET or
decided to do it without an automatic translation tool. VB Migration Partner can
make the difference in this respect.
VB Migration Partner is an innovative VB6 conversion software created by a team of renowned VB and .NET experts. It supports all the main
VB6 features and controls, and delivers .NET applications with significantly fewer
compilation and runtime errors than those produced by other conversion tools.
Our tests on hundreds of randomly chosen open source applications show that VB Migration
Partner correctly converts 999 out of one thousand statements.
VB Migration Partner relies on a sophisticated conversion engine
that can handle as constructs that have
no direct equivalent in the .NET Framework world. The code generation module and
the powerful refactoring module emit .NET code that rivals in quality with code
written by expert developers. Even better, developers can customize the
generated code and can improve the behavior of the converted application while keeping
it in sync with the original VB6 project, thanks to the
convert-test-fix cycle methodology. In spite of all this extra power, VB Migration Partner
is up to 8x faster than the Upgrade Wizard included in Visual Studio.
At the end of the migration process VB Migration Partner produces accurate reports
about the issues it found together with sophisticated code metrics
on the code being migrated, such as total and average cyclomatic index, maximum
and average depth of control structures, and ratio of comments to code. These reports
can be exported to Microsoft Excel to provide a realistic estimation of time and
cost of the entire migration process.
A closer look
VB Migration Partner owes its superior performance to three factors.
First, a state-of-the-art parser is able to correctly convert language
constructs that are commonly considered as impossible to migrate automatically,
including:
- project groups (.vbg)
- Gosub, On Goto, On Gosub keywords
- arrays with LBound <> 0
- “As New” variables with true auto-instancing semantics
- default members in both early- and late-bound mode
- fixed-length strings and arrays thereof
- Gosub, On Goto, On Gosub keywords
- Declare statements with As Any and delegate parameters
- user controls, MTS/COM+ components, persistable and bindable classes, and more
Second, an advanced code generation engine delivers high-quality
VB.NET code using code-analysis and refactoring techniques, such as:
- deterministic finalization for IDisposable objects
- automatic initialization of Type...End Type blocks that contain arrays and fixed-length strings
- creation of implicitly-declared variables (if Option Explicit is off)
- conversion of old-styled error handling code (On Error statement) to structured
exception handling (Try-Catch statement) if possible
- transformation of GoSub keywords into calls to separate methods
- refactoring of ByRef parameters that can safely use by-value semantics
- merging of nested IF blocks into a single IF statement, using the AndAlso keyword
- other basic refactoring features, including transforming Exit Function/Property
into Return statements and merging a variable declaration with its initialization
(e.g. Dim k As Integer = 1)
- recognition and optional removal of unused members and unreachable code
- conversion of VB6 resource files to My.Resources.Xxx elements
Third, a full-featured support library dramatically reduces the
differences between VB6 and VB.NET, ensuring that converted applications run as
intended and supporting advanced VB6 features such as:
- all the 60+ controls in the VB6 toolbox, with the only exception of OLE Container and
Repeater
- language objects and collections (App, Screen, Forms, Printer, Clipboard, PropertyBag,
etc.)
- virtually all control properties, methods, and events
- graphic statements, and user-defined ScaleMode settings
- context menus, support for legacy help files
- DAO, RDO, and ADO data binding, including binding to data controls, ADO.Recordset,
DataEnvironment, ADO consumer classes, and user controls that work as ADO data sources
- creation of new controls at runtime, via control arrays or Controls.Add method, with full
support for the VBControlExtender object
- “classic” VB3-style drag-and-drop, automatic and manual OLE drag-and-drop
- optional conversion of ADODB objects to ADO.NET, including support for
SQL Server keysets and dynamic cursors (a feature that ADO.NET doesn’t
support natively)
Unlike other conversion tools, VB Migration Partner can be customized and fine-tuned
to behave exactly as intended, by means of pragmas. Migration pragmas
are special remarks that you can add to the original VB6 application and that tell
the migration engine how code must be handled during the conversion step. For example,
the ArrayBounds pragma affects how arrays with nonzero LBound are translated; the
AutoNew pragma dictates how auto-instancing (As New) variables are rendered; the
SetType and ChangeType pragmas allow you to change the type of a variable, and so
on. VB Migration Partner supports over 80 different pragmas to solve most of the
challenges that you face during a complex migration project. VB Migration Partner’s
IDE even guides you through the insertion of a new pragma, using an easy-to-use
dialog box that explains the meaning of each argument.
In addition to reducing compilation and runtime errors, pragmas promote the
convert-test-fix cycle, a key feature in managing complex migration
initiatives. Large real-world business applications typically require maintenance
and upgrading while the migration process proceeds in parallel. VB Migration Partner
allows developers to convert the application, test the result, and go back to the
VB6 code to add pragmas that reduce or eliminate compilation and runtime errors,
and then re-try the conversion until the .NET code works as intended. Developers
are working with a single source base, therefore the VB6 and the .NET versions are
in sync until new features are added to the converted project.
VB Migration Partner is powerful enough to deal with huge, enterprise-level projects.
It supports batch migration processes and can easily handle applications
that are split in dozens or hundreds DLLs by supporting phased migrations of individual VB6 DLL,
thanks to its full support for backward binary compability.
It also support source code control
tools – including Visual Source Safe and Microsoft Team System. Last but not
the least, VB Migration Partner can be fully customized by means of an extension
object model that gives you full control on code generation.
(For example, you decide how a given control must be translated.)
Where to go from here
If VB Migration Partner sounds the right tool for your migration needs, have a look
at the following sections on this web site for more detailed information:
- the main features of VB Migration Partner
- the online manual, with detailed descriptions
of all features, a reference guide to pragmas, etc.
- a collection of training videos that illustrate VB Migration
Partner’s main features
- the code samples section, that demonstrates
how we have used VB Migration Partner to migrate many open source VB6 applications
and book samples
- the knowledge base, a collection of short articles
that show how you can solve common issues that arise during the migration process
If you need additional support, we suggest that you
- browse our FAQ page, containing answers to many recurring
questions we’ve heard from beta testers
- subscribe to our Newsletter to get informed when VB
Migration Partner’s release version is available, to learn more migration
tips
- check out our blog to know more about the VB Migration Partner’s
internals
- for further questions, just email us
If you are new to VB6 migration issues, you might want to explore our
Articles page, with links to articles related to VB6-to-.NET migration,
best practice guidelines, and other code migration tools.
We plan to add more resources for VB6 developers who want to convert their applications
to the .NET Framework, including a community-driven forum.