I'm attending a VB6 migration lab with a client this week in Redmond. 

  • There's a VB6 add-in (“Code Advisor“) that tells you where you'll run into issues during the upgrade.
  • It's best to take care of as many things as you can on the VB6 side before running the upgrade wizard.
  • Running the code advisor in VB6 and the upgrade wizard in VS .NET is an iterative process.
  • Upgrade then test for functional equivalence.  Compare feature to feature before you add any enhancements.  Then enhance the app with new functionality.
  • Testing the new app can be the most costly portion of the upgrade process.  (Think of all the regression testing that's required to do it right.)
  • The “upgrade process” is “over” when you reach functional equivalence in .NET.  The remainder is enhancing the app through “traditional” means.

In the applications we upgraded today, the majority of warnings were due to the use of Variants (should use strong typing instead) and string manipulation functions that return variants (such as Left, Right, Mid).  Good news is that these issues were very easy to fix.  :)