gmStudio Release News: Monday, 20-July-2020

Project Success Story: 17 VBPs, 380K LOC VB6, 33 Custom Upgrade features, 6 months

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 conflicts between enums and classes
  • Improves support for migrating properties 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: Upgrade Solution Development Environment

Powered by gmBasic, gmStudio is a development environment for analyzing code and developing custom VB6/ASP/COM to .NET upgrade solutions. We are continuously adding functionality to gmStudio and making it easier to use. This distribution includes several enhancements:

  • Improves Visual Studio Solution File generation
  • Improves Translation Search Results by reporting the member that contains each match (C# only)
  • Improves .NET Build Log Report by reporting the member that contains a given error (C# only)
  • Improves order of fields in .NET Build Log report
  • Adds Compare IDF Files operation from References context menu
  • Adds Compare Source Files operation from Source Metrics context menu
  • Adds Open File Location operation from References context menu
  • Adds Open File Location operation from Source Metrics context menu
  • Improves IDL Author to warn when a hidden class is skipped

gmslAPI: a .NET API for Developing Advanced Upgrade Solutions

Powered by gmBasic, gmslAPI is a .NET API for automating our upgrade engine and accessing the semantic models produced by our unique linguistic compilation technology. gmslAPI also includes classes for managing complex upgrade rules and integrating with gmStudio. This API was updated to reflect the latest product improvements and conventions.

Sample Upgrade Rules

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

Sample Upgrade Solutions

Great Migrations publishes a number of sample VB6/ASP upgrade solutions to illustrate the capabilities of gmStudio. The sample upgrade solutions were updated to reflect the latest product improvements and conventions.

  • Improves MSComCtlLib.ListView.SubItems migration in FileExplorer sample
  • Improves Handling of Select Case in FMStocks