...
Great Migrations recently assisted a client in the migration of a large specialty insurance system from VB6 to C#. Our tools and methods dramatically accelerated the client's digital transformation initiative while lowering cost and risk. Learn more from this article and testimonial on the Great Migrations portal.
gmBasic: Upgrade Engine
gmBasic is a code transformation tool that reads, interprets, and rewrites VB6/ASP/COM systems to one of the .NET languages (C# or VB.NET). Based on feedback from our clients and migration projects in the field, we are continuously improving gmBasic so as to help users more easily produce cleaner and more correct results. Most recently, this work included the general improvements needed to produce build-complete C# code for a leading electronic medical records (EMR) product. This EMR system was both large: 1.8M LOC implementing 85,000 methods, contained in 7000 unique code files, organized by 153 inter-related VBPs, and complex: having over 4000 Implements statements, extensive interface inheritance, and heavy use of over 200 external COM/Interop libraries. This distribution, Version 31.12, includes several enhancements:
- Improves consistency of class members that implement interface members
- Improves accuracy of resolving and preserving interface inheritance
- Improves support for recognizing module members qualified by the project name, the module name, or both
- Improves support for user-defined Font properties
- Improves GoSub refactoring to make extracted GoSub routines private
- Improves GoSub refactoring to handle properties containing GoSubs
- Improves recognizing and migrating abstract Control references
- Improves migrating indexer expressions involving weakly typed collections
- Improves migrating code using Abs in bitwise operations
- Improves setting scope of user-defined types
- Improves resolving naming conflict conflicts between an enum enums and classclasses
- Improves support for migrating property getter/setter with different type/valueproperties where the getter's return type differs from the setter's value type
- Improves migrating passing a unary operation by ref
- Improves migration of Select-Case using LCase/UCase(literal) expressions as Case arguments to switch-case (C#)
- Improves migration of Select-Case using a type Single expression as the Select argument
- Improves Refactor/Migrate command to allow modifying the uuid associated with a designer coclass
- Improves low level handling of code using extended character sets
- Improves support for ComboBox/ListBox NewIndex Property
- Improves resolving object versus default property on LHS of an assignment
- Improves detecting and migrating event handlers for ControlArrays that do not follow standard conventions
- Begins major improvements to late-stage type inference for symbols of type Object in code and COM interfaces
...
gmStudio ships with a collection of sample upgrade rules that can be used to add custom features to your upgrade solution. These XML documents and gmSL scripts are distributed as source that you may modify to fit your unique requirements. The sample rules were updated to reflect the latest product improvements and conventions. See also additions and changes in gmStudio Extensions Repository.
- Refactor.Mscomctl.ocx.xml: Improves MSComCtlLib.ListView.SubItems migration
...