Blog

Blog

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 1.8M LOC electonic medical records application and improvements for the migration of error handling . This distribution, Version 31.04, includes several enhancements:

  • Improves the error handling migration of methods that used On Error GoTo, GoTo, and Resume, etc. to methods that use try-catch
  • Improves resolving ambiguity due to a const/class naming clash
  • Improves support for array arguments to event handlers
  • Improves support for enum properties assigned to an undefined numeric quanity in the VB6 designer code
  • Improves support for stubbed Color properties
  • Improves support for stubbed IntPtr properties
  • Improves support for cases of weakly typed symbols being used in index expressions
  • Improves support for new operations on classes also used as implemented interface
  • Improves support for COM classes that have names clashes in their interfaces
  • Improves support for references to COM constants
  • Improves support for optional parameters to reference type with a default of 0
  • Improves support for IIf used with reference types
  • Improves support for recursive interface methods
  • Improves support for methods declared with UserControl parameters
  • Improves support for COM event handlers that return a non-void type (C#)
  • Improves support for recognizing references to COM indexers
  • Corrects an issue with the GenericCollections upgrade
  • Corrects an issue with complex conditional expressions of functions with enumeration parameters
  • Improves the CodeStyle Feature adding support for limiting consecutive blank lines in generated code
  • Improves support for recognizing members of derived class overriding members of base class
  • Improves migration of Const symbols to static readonly symbols when required
  • Improves handling of statement separators in Select-Case statements
  • Improves handling parameterized properties

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:

  • Adds support for VS2019 integration
  • Adds open with command prompt from gmStudio View Menu when using Control-Click
  • Adds ScriptRule activity reporting to Translation Log
  • Improves Peek Reporting mode to display variable lines above/below matching record
  • Improves Batch Control form to allow setting session log listing max lines
  • Improves RESX Folder conventions to use SrcName rather than MigName-SrcName
  • Improves Migration Project Name validation
  • Adds support for viewing scripts separate from logs in the information panel

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.

  • Improves Tab Control Migration to preserve zOrder of contained controls
  • Improves Tab Control Migration to set SizeMode to account base on Style if needed
  • Adds sample for vsFlexLib.vsFlexArray migration to WinForms.DataGridView

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.

  • Adds a new Sample, VBScan, a VB6 parser/reporter that also illustrates upgrading the Microsoft Outline Control to WinForms Treeview-derived control
  • Updates all Samples to target Visual Studio 2017 by default

The Dec-2019 Release introduces a change in how some of the samples do COM API upgrades.

In prior releases, the deep migration work in the samples was partially done by DLLs developed using our C-based API (gmNI).  gmNI is not available for typical gmStudio users, and we wanted to rework the samples using our scripting language, gmSL. In addition, prior releases of the samples used custom COM Interface Description Files (IDFs). The custom IDFs are a convenient way to map a COM API to its .NET replacement, but they have some disadvantages from a tooling and maintainability perspective. In this release, we are going to use Refactor files to specify mapping COM APIs to their .NET replacement. In some cases, the mappings also include instructions to load gmSL scripts that perform deep migration.  The gmSL scripts that are distributed as text files with the tool and the samples and they may be extended and altered by users to meet their specific upgrade needs.  Note: the COM upgrade techniques demonstrated in the samples are general capabilities that may be applied to any COM API.   Additional examples of COM upgrade rules are published on the gmStudio Extensions page. 

Deep Migration: An upgrade requiring advanced transformations such as adding or removing logic and choosing from different replacement types and coding patterns. Deep migration goes beyond the surface migrations and alterations which can be specified with refactoring attributes on various COM API elements in an IDF.

The gmNI DLLs, ScrrunMigration.dll and MscomctlMigration.dll, are no longer distributed with gmStudio. Please apply the new approach using gmSL scripts as illustrated in the latest samples. Contact Great Migrations if you require assistance.


ScanTool Sample Changes

The ScanTool sample includes several COM API replacements. One of these, Scrrun to System.IO, requires a number of deep migrations:

* Replacing FileSystemObject operations with calls to static functions
* Migrating TextStream instances and calls to one of several .NET Streams based on usage

In prior releases of the sample, the Scripting to System.IO migration was done using a custom IDF and an associated gmNI DLL: GM.scrrun.dll.xml and ScrrunMigration.dll. These migration assets were activated using the following commands in the translation script:

<Registry type="libname" source="scrrun.dll" target="GM.scrrun.dll" />
<Registry type="idfstatus" source="GM.scrrun.dll" target="migrate" />

and in the custom IDF:

<Refactor id="[GM.scrrun.dll]" dllName="ScrrunMigration.dll" event="scrrun" >

Starting with the Dec-2019 Release, we are doing the Scripting to System.IO migration with a COM Refactor IDF file and an associated gmSL script: Refactor.Scrrun.dll.xml and Transform.Scrrun.gmsl. These migration assets are activated using the following command in the translation script:

<Registry type="MigFile" source="scrrun.dll" target="Refactor.scrrun.dll" />

and in the custom Refactor IDF File:

<gmSL NameSpace="scrrun" class="Transform" Source="Transform.Scrrun.gmsl" />

This change has several advantages:

  • The Refactor IDF file contains just the rules used to map Scripting to System.IO rather than intermingling the full description of the COM API with modifications to drive the migration. We believe this change makes it easier to see and modify the mappings. The Refactor IDF file works hand in hand with the standard generated IDF file making the transition from a standard to custom translation smoother.
  • The dynamic migration is done using a gmSL script rather than a pre-compiled DLL. This makes the deep migrations open to extension and modification by gmStudio users. Note: gmSL works very precisely with low-level operations in the compiled model of the VB6/COM code. gmSL can automate very difficult transformations, but the problems and solutions are in the details.

The following files are used to direct the COM migrations for the ScanTool sample:

  • Scrrun.Refactor.xml: COM API elements adjustments for scrrun.dll to System.IO and Specialized Collections.OrderedDictionary
  • Scrrun.Transform.xml: Scrrun.Transform Class implementing transformations for various scrrun.dll API references
  • Mscomctl.Refactor.xml: COM API mapping for Windows Common Controls to WinForms Controls
  • Mscomctl.ServiceMethods.gmsl: MScomCtl.ServiceMethods class implementing service extensions that alter the processing done by the core tool at specific points in the upgrade process
  • Mscomctl.MigCode.gmsl: MScomCtl.MigCode class implementing dynamic code generation logic for MScomctl API controls
  • Mscomctl.Transform.gmsl: MScomCtl.Transform class implementing transformations for various Mscomctl API references

 Additional examples of these files and other COM upgrade rules are published on the gmStudio Extensions page. 

Other Samples

These changes also impact the FileExplorer, FMStocks, and WPFScanTool samples.


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 173K LOC statistical-process-control-reporting application and major improvements to migration rules conventions. This distribution, Version 31.00, includes several enhancements:

  • Corrects fixed-size array declarations in VB.NET.
  • Improves support for implementing COM API replacements using Migrate command files and gmSL Scripts
  • Improves migration of Property.Let statements
  • Improves migration of DisplayStyleConstants and DrawModeConstants
  • Improves migration of local references to default properties

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:

  • Updates gmStudio with gmBasic V31.00
  • Adds support for creating generic VB6 starter codes and gmStudio projects for testing specific translation scenarios
  • Adds File/New menu as context menu to New toolbar button
  • Adds option to display Upgrade Task fields with red/yellow/green color for ERROR/WARNING/SUCCESS status
  • Adds COM IDL files as a Search Source
  • Modifies Alternate Field Layout
  • Improves highlighting Task List items
  • Improves Search Results to allow sorting of numeric columns in natural numeric order
  • Improves Visual Studio Solution File Project list to allow %UserFolder% variable in project path
  • Improves performance of pre-processing large translation scripts
  • Improves adding new tasks to a project
  • Improves Translation Log Reports
  • Improves organization of File and Help Menus
  • Improves appearance of Fonts in high DPI environments

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.  This distribution includes several script enhancements:

  • Scrrun.Refactor.xml – Adds COM API mapping for scrrun.dll to System.IO and Specialized Collections.OrderedDictionry
  • Scrrun.Transform.xml – Adds Scrrun.Transform Class implementing transformations for various scrrun.dll API references
  • Mscomctl.Refactor.xml – Adds COM API mapping for Windows Common Controls to WinForms Controls
  • Mscomctl.Transform.gmsl – Adds MScomCtl.Transform class implementing transformations for various Mscomctl API references
  • Mscomctl.MigCode.gmsl -- Adds MScomCtl.MigCode class implementing dynamic code generation logic for MScomctl API controls
  • Mscomctl.ServiceMethods.gmsl – Adds MScomCtl.ServiceMethods class implementing service extensions that alter the processing done by the core tool at specific points in the upgrade process
  • UserCmd.std.cmd – Improves Testing logic

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.

  • FileExplorer – Adds ListView Columns Sorting example to this sample
  • FileExplorer – Adds ListView Item Selection example to this sample
  • Batch Script – Adds logic to run Analytics Definitions Reports to the sample batch script
  • Changes to using Refactor IDF files rather than Custom IDF files for deep migrations
  • Changes to using gmSL scripts rather than gmNI DLLs for deep migrations
    Learn more on this Blog Post.

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. This distribution, Version 30.95, includes several enhancements:

  • Adds support for dimensioned types as collection values in the GenericCollections Migration extension
  • Adds support for migrating a boolean to an enum
  • Adds support for extending an API by adding an enumeration at the library level
  • Adds support for using Refactor/Remove with Enums and Consts symbols
  • Improves default interface description files to migrate COM short to .NET integer
  • Improves support for changing the number of arguments when migrating a method
  • Corrects issue with handling arguments containing '#' character
  • Improves handling whitespace and complex markup when upgrading ASP
  • Improves handling name collisions between the Form and a method within the same Form
  • Improves %nP Pattern Token replacement conventions
  • Improves handling to ControlArray.Ubound operations
  • Improves handling conditional expressions comparing Date and Int(Date)
  • Improves handling division expressions using Twips quantities

gmStudio: Upgrade Solution Development Environment

Powered by gmBasic, gmStudio is a development environment for creating high-performance, 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:

  • Adds support for using a gmProj-specific Project List file when generating a Visual Studio Solution file
  • Adds support for specifying and using folders to organize projects when generating a Visual Studio Solution file
  • Adds Generate Solution File option to Tools Menu
  • Adds Edit Solution File Project List File option to Tools Menu
  • Adds support for passing Project Type (VB6 or ASP) into script templates
  • Adds support for PostAuthor elements in ScriptRules file
  • Improves Member Location reported in Source Scan for matches in the General code block
  • Improves displaying Functional Test Log in Information Panel
  • Improves reporting REPLACEFILE messages in Translation Log Report
  • Improves section headers in the All Logs Report
  • Improves searching Migration Set Report results
  • Improves adding multiple VBPs from a VBG file or a simple text file listing of VBP paths
  • Improves Search Results reporting to allow reporting regular expression group matching anywhere in the report record using %rec%[n] place holder in Search Report Template
  • Improves Search list results handling of "not found" case
  • Improves ScriptRules logging in the actual translation script
  • Improves the GUI Scan report with support for Designer file data
  • Improves the Side-by-Side Viewer with support for Designer file data
  • Improves References Report to include coclass/class used as parameter
  • Improves reporting Properties on References Report and Definitions Report

gmslAPI: a .NET API for Developing Advanced Upgrade Solutions

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

  • Improves References report to include coclass/class used as parameter
  • Improves reporting properties on References Report and Definitions Report

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.

  • Improves Windows Common Controls to WinForms Rules
  • Implements ListControls.gmsl without using DataStore classes
  • Improves Functional Test batch processing sample
  • Improves Instructions in the Search Report Template sample
  • Adds more controls to StubControlBaseClass.xml

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.

  • Adds ListView Columns Sorting example to FileExplorer sample
  • Adds logic to run Analytics Definitions Reports to sample batch script

gmBasic: Upgrade Engine

gmBasic is a code transformation tool that 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. This distribution, Version 30.92, includes several enhancements:

  • Corrects problems with translating VBScript comments within ASP String Literals
  • Improves preservation of horizontal and vertical whitespace in ASP translations
  • Improves support for more operation while under trial license
  • Adds use of libtype=Internal in a migration rules file to suppress stub assembly references
  • Improves support for DataField and DataSource properties while generating a global stub framework
  • Improves recognition of various VB6 Intrinsic functions
  • Improves recognition of an custom instance of the ErrorObject
  • Simplify metalanguage information for VB6 File System ListBox controls

gmStudio: Upgrade Solution Development Environment

Powered by gmBasic, gmStudio is a development environment for creating high-performance, 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:

  • Adds Help/Extensions to display gmStudio Extensions Repository https://portal.greatmigrations.com/display/GMG/gmStudio+Extensions
  • Improves detecting and using of different versions of VS2017 for .NET build operations
  • Improves Definitions Report to indicate which subprograms are event Handlers
  • Improves ScriptRules command to allow additional script variables in FileName attribute value
  • Improves handling nested conditions in ScriptRules elements
  • Improves ScriptRules logging and error handling
  • Improves hot-key handling for Task Reset operation
  • Improves Find dialogue behavior in the Side-by-Side Form
  • Improves Translation Log Reporting
  • Improves Member named in Source Scan Report for matches found in a file's General section
  • Improves File Peek Report when starting from first record of a file

gmslAPI: a .NET API for Developing Advanced Upgrade Solutions

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

  • Corrects issue with WPF startup when the VB6 had a startup form
  • Improves general handling of controls for XAML generation
  • Improves Definitions Report to indicate which SubPrograms event Handlers

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.

  • Adds gmStudio Extensions Repository https://portal.greatmigrations.com/display/GMG/gmStudio+Extensions. Automatic Tool integration coming in a future release
  • Improves default VB6 Issues list to check for control validation handlers
  • Improves samples rules to inherit a stronger base control when generating COM stub control classes
  • Improves sample script for adding instrumentation to VB6 codes
  • Improves sample batch script for automating gmStudio from command line
  • Improves sample batch script for testing translation results
  • Improves sample migration rules for COM: MSComCtl.ocx, Scrrun.dll

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 WPF Samples to use local gmSL scripts rather than system scripts

gmBasic: Upgrade Engine

gmBasic is a code transformation tool that 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. This distribution, Version 30.89, includes several enhancements:

  • Improves the general ability to produce accurate, build-complete .NET (C# and VB.NET) systems from ASP sites (most recently making enhancements needed to upgrade a large e-mail marketing system with over 1000 pages and almost 300 #includes.)
  • Improves the general ability to produce accurate, build-complete .NET (C# and VB.NET) systems from VB6 applications (most recently making enhancements needed to upgrade a structural engineering application (130K LOC) and a reinsurance application (120K LOC).)
  • Adds Refactor\Fixtype@status=dynamic to allow translating with a strong type but authoring the code to use type dynamic
  • Adds Registry@type=MigFile to allow associating a Migration File with a COM interface file
  • Improves handling pages with deeply nested and inter-dependent #include files in ASP
  • Improves handling user defined VBScript class named "Collection" in ASP
  • Improves handling const in ASP
  • Improves handling arrays used in foreach
  • Improves type inference when variable is declared and initialized on same line of code
  • Improves handling to intrinsic RegExp API for ASP
  • Improves handling parameters to VB6's file Open statement
  • Improves handling parameters to DrawMode property
  • Improves handling parameters to Scale method
  • Improves handling the Call keyword

gmStudio: Upgrade Solution Development Environment

Powered by gmBasic, gmStudio is a development environment for creating high-performance, 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:

  • Adds Peek Reporting mode for inspecting content surrounding a search result
  • Improves Search reporting when using a Report file as a search source
  • Improves System Configuration Search to include application templates folder as a search source
  • Improves integration of file edit operation with Search results
  • Improves integration of Side-by-Side viewer with Search results
  • Improves display of .NET files in Side-by-Side viewer when one source file becomes many .NET files
  • Improves translation log report details for warning messages
  • Improves Reference Report by reporting declaring form/control containing control references
  • Improves license checks in ScriptRules files
  • Improves accuracy of Members Report for ASP

gmslAPI: a .NET API for Developing Advanced Upgrade Solutions

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

  • Improves Reference Report by reporting declaring form/control containing control references
  • Corrects Reference Report to avoid exception when a reference occurs in a very long source line

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.

  • Improves CodeScanList.txt: additional entries in preset list of Potential VB6 Issues

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.

gmBasic: Upgrade Engine

gmBasic is a code transformation tool that 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. This distribution, Version 30.84, includes several enhancements:

  • Improves the general ability to produce accurate, build-complete .NET (C# and VB.NET) systems from ASP sites (most recently making enhancements needed to upgrade a large e-mail marketing system with over 1000 pages and almost 300 #includes.)
  • Improves handling the ASPErrorObject
  • Improves handling VB6 codes with very long Conditional Compilation settings in the VBP file

gmStudio: Upgrade Solution Development Environment

Powered by gmBasic, gmStudio is a development environment for creating high-performance, 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 Search Reporting to allow searching ASP site code based on the list of files processed by the translator
  • Improves Search Reporting to allow using gmStudio Report files as a search source
  • Improves Definitions Report to report immediate parent of each defined symbol
  • Improves Definitions Report to report a Handler attribute for Subprograms that are event handlers
  • Improves handling projects that reference missing source files
  • Improves handling deployment reporting
  • Adds support for showing columns keys rather than descriptions in the Search Reports results
  • Adds support for reporting Processed File messages in the Translation Log report
  • Improves working with project content located on a UNC path
  • Adds support for suppressing session logging by setting Max Session Lines to 0

gmslAPI: a .NET API for Developing Advanced Upgrade Solutions

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

  • Improves Definitions Report to report immediate parent of each defined symbol; This is helpful for analysing sub program parameters
  • Improves Definitions Report to report a Handler attribute to Subprograms that are event handlers

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.

  • Improves CodeScanList.txt: additional entries in preset list of Potential VB6 Issues

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.

gmBasic: Upgrade Engine

gmBasic is a code transformation tool that 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. This distribution, Version 30.82, includes several enhancements:

  • Improves the general ability to produce accurate, build-complete .NET (C# and VB.NET) systems from VB6 code (most recently making enhancements needed to upgrade a large ERP system with 326 VBPs referencing 1,369 code files containing 1.3M LOC and 50 third-party-COM components)
  • Improves migration of PropertyBag and PropertyPage
  • Improves support for using Debug Build Configuration
  • Improves support for VBScript classes in ASP translations
  • Improves support for ASPErr Object in ASP translations
  • Improves translation of DragOver and DragDrop events
  • Improves diagnostic reporting for migrating implicit conversions and Type Inference operations
  • Improves translation of LoadResPicture function
  • Corrects issue with Event/Method Name Clash when BuildFile=global
  • Improves handling IIf  when return values have different types.
  • Improves Naming convention for same-named ASP pages
  • Improves handling "New class.member" references in ASP
  • Improves handling ScaleModeConstants enumeration
  • Improves handling Arrays declared using type-indicator characters
  • Improves recognizing properties of Global Multiuse classes
  • Improves migrating complex IIf expressions

gmStudio: Upgrade Solution Development Environment

Powered by gmBasic, gmStudio is a development environment for creating high-performance, 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 Source Search performance by using multi-threaded logic
  • Improves Side-by-Side Viewer to allow manually selecting files displayed
  • Improves handling of ASP with VBScript classes on the the Side-by-Side form
  • Improves behavior of Reporting Only mode when project exceeds license limits
  • Improves handling regex expression errors on Search panel

gmslAPI: a .NET API for Developing Advanced Upgrade Solutions

Powered by gmBasic, gmslAPI is a .NET API for automating the gmBasic upgrade engine and accessing the semantic models produced by our unique linguistic compilation technology. gmslAPI also includes classes to facilitate the integration and management of complex upgrade rules in 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.

  • Improves CodeScanList.txt for translation audit reporting
  • Improves GlobalStubs.xml for generating global stub framework

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.

gmBasic: Upgrade Engine

gmBasic is a code transformation tool that 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. This distribution, Version 30.80, includes several enhancements:

  • Improves handling statement continuation
  • Improves handling missing code files
  • Improves handling assigning a string quantity to a Font property
  • Improves several details in VB.NET translations

gmStudio: Upgrade Solution Development Environment

Powered by gmBasic, gmStudio is a development environment for creating high-performance, 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 reporting user-defined type and class references in the Analytics References Report
  • Improves handling file references for sub-modules within COM libraries
  • Improve status reporting for VB6 Build test
  • Improves Startup Splash Screen to display a unique build ID

gmslAPI: a .NET API for Developing Advanced Upgrade Solutions

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

  • Improves coverage and detail in the Reference and Definitions reporting APIs

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.

  • Improves WPF Migration to handle Startup with Main function rather than a startup Form
  • Improves sample script for automating gmStudio from the command line

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.

It's been 20 years

Happy New Year! 2019 is here and it is almost 20 years since the last major release of Visual Basic classic (VB6). Companies have been implementing business functionality as VB6 (or ASP classic) code for over two decades. And while these legacy applications are essential to business, their dependence on VB6/ASP/COM is a serious risk for the users of these applications. Recent trends in computing and shifts in the developer community make VB6/ASP modernization an urgent priority -- more than ever before. This email presents a business case for upgrading VB6/ASP/COM systems to .NET and describes how Great Migrations can help.

Technology Trends

Our expectations for computing have changed dramatically since the turn of the century:

  • Several Major Windows OS changes: XP, Vista, Windows 7, Windows 8, Windows 10
  • Critical focus on cyber security and privacy
  • Profound advances in web application design and browser technology
  • Ubiquitous internet: IoT, web-connected applications, web services, mobile and smart devices
  • New cloud computing and virtualization platforms: Azure, AWS, Docker
  • Improvements in user experience: Voice, Touch, Gestures, Vision
  • Changes in deployment: Automatic Windows Update, Roaming Realtime Personalization, Installations from App Stores, SaaS
  • Cutting-edge computing: Machine Learning, Hive Computing, Robotics, and Augmented Reality

The Windows platform continues to diverge from its 32-bit roots and, in the process, it becomes less compatible with VB6 and COM. January 2020 will bring the End of Windows 7 Support. We already have people telling us that their VB6/ASP applications no longer work reliably and fail to meet expectations for security and usability. Those problems will increase as more people upgrade to the latest Windows OS and find that their out-dated applications do not even install let alone function correctly.

Meanwhile, Windows development for .NET continues to evolve. The .NET community is growing and creating commercial and Open Source compilers, frameworks, applications, and development tools. .NET development is now possible on multiple platforms: Android, iPhone, Linux and MacOS -- besides Windows.

Finally, we continue to enjoy great advancements in the ways teams build software: improved DevOps and Collaboration, Continuous Integration, automated testing, integrated application monitoring, and sophisticated design patterns. Optimized for.NET, these advances cannot be fully utilized on the VB6/ASP/COM platform.

This is progress, but technology for technology's sake does not pay the bills. Reliable, accurate functionality for your users is what matters most. As long as your functionality remains locked up in out-dated technology, it will be difficult to maintain service levels, let alone deliver the promises of contemporary computing.


The Case of the Disappearing VB6 Programmer

VB6 was designed and optimized for COM and Windows XP. It was very popular in the 1990s, but it started to fall out of favor in 2002 when Microsoft released .NET. The official end-of-support for VB6 was over 10 years ago, in April 2008.

Developers generally prefer to work with well-supported, marketable technologies. Finding people who are both willing and able to work with VB6/ASP is getting harder and it's only a matter of time before VB6/ASP development activities fail due to lack of resources. If you have VB6/ASP experts working for you, it may be a good idea to begin your modernization efforts now, while those folks are available to help. You may also consider using gmStudio to help you "cash-in" your legacy codes and get the job done faster with less cost, risk and disruption.

At its peak, there were over three million developers writing VB6 code. Maybe you were one of them; I was. Today, most working Windows developers never used VB6 and those who did have gone on to learn .NET. VB6 as a mainstream development tool is history, and the same can be said about ASP Classic for web development. As shown in the schematic, the assumed diminishing size of the VB6 community may not be far off from the actual attrition.

Estimated Numbers of Willing and Able VB6 Developers over time

A Major Advancement in VB6/ASP/COM Transformation Technology -- Upgrading VB6 Forms to WPF

gmBasic is a powerful code transformation tool that reads, interprets, and rewrites VB6/ASP/COM systems for .NET -- as either C# or VB.NET code. gmBasic is extremely fast and accurate, but its most powerful feature is flexibility arising from an open COM type system, a modifiable VB6/ASP metalanguage, and customizable upgrade scripts.

In 2018, GM made another major breakthrough: gmAPI, a .NET API for automating the gmBasic engine and accessing the semantic models produced by our linguistic compilation technology. Development teams may now use the Visual Studio IDE to integrate gmBasic translation technology with .NET platform features and create sophisticated upgrade solutions that do deep refactoring like upgrading VB6 Forms to WPF and restructuring logic with custom COM API replacements.

gmStudio users have already used the gmAPI to implement very large, multi-feature upgrade solutions. See for example this case study about a large VB6/Forms to C#/WPF upgrade.

gmStudio Components

 

This is a copy of the Annual News Letter for 2019

gmBasic: Upgrade Engine

gmBasic is a powerful code transformation tool that reads, interprets, and rewrites VB6/ASP/COM systems for .NET (using C# or VB.NET). We are always improving gmBasic and the core upgrade rule set to make them more robust and flexible so that they produce cleaner, more correct results. This distribution, Version 30.78, includes several enhancements:

  • Improves handling of TabIndex on Labels and Frames to more closely match VB6 Tab Order behavior in WinForms
  • Improves migration of File System ListBox controls to WinForms
  • Adds support for setting Library.ImplicitByRef and Library.AssemblyName in Migrate commands
  • Improves handling of name clash between a class and an enclosed User-Defined-Type
  • Adds support for renaming a User-Defined Types by accepting the migName attribute in the Interface Description Files

gmStudio: Upgrade Solution Development Environment

Powered by gmBasic, gmStudio is a development environment for creating high-performance, custom VB6/ASP/COM to .NET upgrade solutions. We are always adding functionality to gmStudio and making it easier to use. This distribution includes several enhancements:

  • Improves Splash Screen at startup

gmSLAPI: a .NET API for Developing Advanced Upgrade Solutions

Powered by gmBasic, gmslAPI is a .NET API for automating the gmBasic upgrade engine and accessing the semantic models produced by our unique linguistic compilation technology. gmSLAPI also includes classes to facilitate integrating with gmStudio and managing complex upgrade rules. The 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.

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.

  • Corrects handling of File System ListBox controls in ScanTool Sample
  • Improves handling of TabIndex on Labels and Frames to more closely match VB6 Tab Order behavior in WinForms

gmBasic: Upgrade Engine

gmBasic is a powerful code transformation tool that reads, interprets, and rewrites VB6/ASP/COM systems for .NET (using C# or VB.NET). We are always improving gmBasic to make it more robust and flexible so that it produces cleaner, more correct results. This distribution, Version 30.78, includes several enhancements:

  • Improves the general ability to produce accurate, build-complete .NET (C# and VB.NET) systems from VB6 code. Most recently, these enhancements were brought to bear on the upgrade of a Property Management application implemented in 44 VBPs referencing 2,520 code files containing 1.9M LOC and 44 third-party-COM components
  • Improves handling of type indicator characters used in variable references
  • Improves handling VB.Data Control and VB.OLE Control
  • Improves handling name collisions between global methods and user-defined types
  • Improves handling handling alternate statement separator in declarations using Global keyword
  • Adds detailed diagnostic logging for Type Interference using <Select TraceChanges="on"/>

gmStudio: Upgrade Solution Development Environment

Powered by gmBasic, gmStudio is a development environment for creating high-performance, custom VB6/ASP/COM to .NET upgrade solutions. We are always adding functionality to gmStudio and making it easier to use. This distribution includes several enhancements:

  • Improves performance of New Project Wizard
  • Improves various aspects of UI such as list sorting, tooltips, labels, etc
  • Adds option to skip build when running New Project Wizard
  • Adds option to ignore missing COM references when running New Project Wizard
  • Improves integrated .NET build to allow for different versions of VS2017
  • Adds a Splash Screen when starting in GUI mode
  • Improves diagnostic logging at startup feature
  • Improves console logging when running in batch mode
  • Improves syntax highlighting for C# in Side-by-Side viewer
  • Improves performance of running analytics reports
  • Improves file/string hashing to use FIPS compliant algorithm   (used for GUID generation and duplicate file / method detection)
  • Improves handling of international character sets by standardizing on UTF-8 encoding
  • Improves performance of Longest Lines report
  • Improves handling of special characters when searching contents of Side-by-Side form
  • Improves handling very large files during Target Code Scan
  • Improves COM description file generator to suppress "numbered duplicate" interfaces
  • Improves performance of task filtering operations
  • Add support for XML declaration element in translation script and gmProj files
  • Improves Author Fix/FileFilter to allow for partial filepath; e.g., just the filename
  • Improves license checking and operation while in Reporting Only mode
  • Corrects problem with adding files to a new ASP project

gmSLAPI: a .NET API for Developing Advanced Upgrade Solutions

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

  • Modifies sample Program to use gmslAPI.Common.DefaultStartUpFile rather than hard coded startup

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.

  • Improves support for Scripting (scrrun.dll) Migration
  • Improves sample batch code in RunGmStudio.cmd

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 sample batch regression test scripts

gmBasic: Upgrade Engine

gmBasic is a powerful code transformation tool that reads, interprets, and rewrites VB6/ASP/COM systems for .NET (using C# or VB.NET). We are always improving gmBasic to make it more robust and flexible so that it produces cleaner, more correct results. This distribution, Version 30.76, includes several enhancements:

  • Improves the general ability to produce accurate, build-complete .NET (C# and VB.NET) systems from VB6 code (most recently making enhancements needed to upgrade a massive ERP application with 1,366 VBPs referencing 11,739 code files containing 6.1M LOC and 65 third-party-COM components)
  • Improves handling COM file references in VBP files
  • Improves handling identifiers containing international characters
  • Improves handling VB6 App.LogPath and App.LogMode

gmStudio: Upgrade Solution Development Environment

Powered by gmBasic, gmStudio is a development environment for creating high-performance, custom VB6/ASP/COM to .NET upgrade solutions. We are always adding functionality to gmStudio and making it easier to use. This distribution includes several enhancements:

  • Improves flexibility of deployment by allowing the user to specify .NET project file and folder naming conventions as part of each gmStudio project's settings
  • Improves resolution of Translation Script location for EXE tasks
  • Improves passing command line arguments for EXE tasks
  • Improves whole file search when matches are found at start of line
  • Improves project re-location logic to allow moving from one drive to another
  • Improves reporting of Warning and Note messages in the Translation Log Report
  • Improves support for MSBuild and VS2017
  • Improves ScriptRule feature so Compile\Refactor commands are automatically placed after Compile\Fix commands
  • Improves error handling when Authoring COM Interface Descriptions from a TypeLibs.lst file
  • Improves handling of international characters in script and log files
  • Corrects problem with saving user defaults changes
  • Corrects SyntaxHighlighter to color comments before strings
  • Improves efficiency of running metrics reports from New Project Wizard
  • Improves New Project Wizard to include Metrics details in Project Review results

gmSLAPI: a .NET API for Developing Advanced Upgrade Solutions

Powered by gmBasic, gmslAPI is a .NET API for automating the gmBasic upgrade engine and accessing the semantic models produced by our unique linguistic compilation technology. gmSLAPI also includes classes to facilitate integrating with gmStudio and managing complex upgrade rules. The 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.

  • Improves Tab Dialog Control (TabDlg32.ocx) Migration
  • Improves support for Scripting (scrrun.dll) 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.

Overview

Upgrading a real-world VB6 application typically requires replacing COM APIs with .NET APIs. gmStudio uses and open, extensible COM type system to facilitate automating these types of COM upgrades. The COM type system used by the upgrade process is declared in a set of files called Interface Description Files (IDFs). IDFs are XML text files that declare all of the elements of an API: the enumerations, classes, structs, etc. IDFs are detailed dow the level of individual method arguments. An standard set of IDFs are generated for you by gmStudio from the COM binaries used by your application. The IDF generation process usually works completely automatically, but in some cases it is necessary to manually locate and generate IDFs for atypical COM type libraries.

Standard IDFs are designed to direct the translation to use either a stub framework exposing the original COM API or an interop wrapper around the COM binary. The default is to let the gmStudio generate the stub framework and referecne it in the translated application code. This state of translation: referencing a stub framework is an initial step to facilitate building and verifying the standard translations. Once this step is completed, the IDFs may be modified to direct the translator to replace the COM APIs with some other API. The replacement techniques require modifying the IDF to change how its elements are referenced in translated code.

There are two ways to modify IDFs:

  • Modify the IDF XML files directly, or
  • Modify the IDF information with refactoring commands

This document describes how to use the second approach.  See this article for a discussion of COM Replacements by modifying IDFs directly.  

Mig.IDF Files

A Mig.IDF file is an XML text file that contains refactoring commands associated with a given IDF. Using Mig.IDF files provides a more deliberate, and arguably superior approach to organizing COM migration rules for each API. Compared to COM replacements done by modifying IDFs directly, using Mig.IDF files can be easier to create and easier to see what is being migrated because the rules are more clearly identified and explicit. Note also that Mig files are applied to the generated IDF, so re-generating the IDF will not disturb the associated Mig.IDF file.

An Example: MSComCtlLib.ProgressBar to a WinForms.ProgressBar

Let's say you want to migrate MSComCtlLib.ProgressBar to a WinForms.ProgressBar. This is a pretty easy migration as the WinForms control is very similar to the COM control.   

First you create a Mig.IDF file for the MSComCtl.ocx API taht contains progress bar. This file must be named "Mig." followed by the name of the COM IDF containing the class/control that you want to migrate in this case, the name is Mig.MSComCtl.ocx.xml. An initial version of this file is shown below.

<RefactorLibrary>
<Refactor id="[MSComCtl.ocx]">
<Migrate location="DoNotDeclare" migName="System.Windows.Forms" />
<Migrate id="IProgressBar.Min" migName="Minimum" />
<Migrate id="IProgressBar.Max" migName="Maximum" />
<Migrate id="IProgressBar.Appearance" migStatus="mustCorrect" />
<migClass id="NetControl.ProgressBar" migName="System.Windows.Forms.ProgressBar" parent="ProgressBar">
<property id="Location" value="(Left,Top)" nPram="2" migPattern="new System.Drawing.Point(%1d, %2d)" />
<property id="Name" type="string" value="SYM.name" />
<property id="Size" value="(Width,Height)" nPram="2" migPattern="new System.Drawing.Size(%1d, %2d)" />
<property id="TabIndex" type="Integer" value="TabIndex" default="0" />
<!-- NOT MAPPED for designer Appearance = System.Windows.Forms.AppearanceConstants.cc3D; -->
</migClass>
</Refactor>
</RefactorLibrary>

 

The Mig.IDF file should be placed in "user" folder in the project work space along with the other upgrade scripts, code, and documentation you are developing for your upgrade solution.

For this example, I placed the mig file in the usr\idf\3pc folder in my project workspace.

Next, you activate the Mig.IDF by taking advantage of gmStudio's folder conventions. For example, the following ScriptRule sets the primary configuration folder to usr\idf\3pc then loads the IDF. The tool will search for the IDF and load it then search for the Mig.IDF file and apply the refactoring commands.

<ScriptRule id="MSComCtlLib">
<Option>
<Select Target="..\usr\idf\3pc"/>
<reference id="MSComCtl.ocx" />
</Option>
</ScriptRule>

Finally, this ScriptRule may integrated into the main translation script template using a <ScriptRule> command:

<gmBasic>
<Storage Action="Create" Identifier="%JobId%" />
<select Target="%UserFolder%" />
<Select Local="%IdfFromCodeFolder%" />
<Select System="%IdfFromIdlFolder%" />
...
<ScriptRule id="MSComCtlLib" /> 

<Compile Project="%SrcPath%" />
<Analyse />
<Output Status="New" Filename="%BndPath%" />
<Author />
<Storage Action="Close" />
</gmBasic>

When translator processes any VBP code that references this API, it will do so according to the modified IDF rules.

Basic Processor V30.76(07/18/18) System Build(07/18/18 5:26:53)
...
Loading reference:[MSComCtl.ocx] \gmClients\Client\poc\proj\idf\FromIdl\MSComCtl.ocx.xml
Loading reference:[Mig.MSComCtl.ocx] \gmClients\Client\poc\proj\usr\idf\3pc\Mig.MSComCtl.ocx.xml
...

gmBasic: Upgrade Engine

gmBasic is a powerful code transformation tool that reads, interprets, and rewrites VB6/ASP/COM systems for .NET (using either C# or VB.NET). We are always improving gmBasic to make it more robust and flexible so that it produces cleaner, more correct results. This distribution, Version 30.75, includes several enhancements:

  • Improves the general ability to produce accurate, build-complete .NET code systems from VB6 code (most recently making enhancements needed to upgrade a large insurance application with 26 inter-related VBPs referencing 592 code files containing 575K LOC and 34 third-party-COM components)
  • Improves accuracy and readability of certain complex conditional expressions
  • Improves default C# coding style to use lightweight object-oriented coding conventions (formerly, this required the "SubSystem=loc" option)
  • Improves default VB.NET coding style to favor using VB.NET run-time support rather than extension methods
  • Improves handling identifiers containing international characters

gmStudio: Upgrade Solution Development Environment

Powered by gmBasic, gmStudio is a development environment for creating high-performance, custom VB6/ASP/COM-to-.NET upgrade solutions. We are always adding functionality to gmStudio and making it easier to use. This distribution includes several enhancements:

  • Adds flexibility of deployment by allowing the user to specify .NET project file and folder naming conventions as part of each gmStudio project's settings
  • Adds options for project task name conventions to better support different types of legacy project naming conventions
  • Adds support for setting CodePage in the .NET project file
  • Adds support for setting .NET Project Type GUIDs needed for WPF upgrades
  • Improves conventions for StartUpObject conventions for WPF upgrades
  • Improves handling of MigrationSupport stub classes in integrated translations
  • Improves handling of international characters in all Search Reporting functions
  • Adds stable-but-unique Project GUID generation for all .NET projects
  • Improves gmStudio About Box Reporting
  • Corrects screen layout issues when running Windows with Text Size greater than 100%
  • Improves Analytics Reports and model Audits to use gmMetrics, a gmSLAPI application
  • Improves default handling of Last Message field to avoid spurious differences between versions of gmProj files
  • Adds support for interpreting foreign language build logs
  • Adds support for using the %ProjFolder% token in Solution File Generator project list
  • Improves log content for Solution File Generator
  • Improves reporting of #INFO messages in Translation Log Reports
  • Adds sort indicators to ListView column headers
  • Improves integration with upgrade tasks using a gmslAPI executable
  • Improves Configuration Form User files listing to include sub-folders
  • Adds support for Form-to-XAML in the Side-by-Side Viewer for WPF upgrades
  • Adds option to skip running translations in Upgrade Wizard thus running only the metrics reports
  • Improves handling of very large (>64MB) log files (e.g., when using diagnostics)

gmSLAPI: a .NET API for Developing Advanced Upgrade Solutions

Powered by gmBasic, gmslAPI is a .NET API for automating the gmBasic upgrade engine and accessing the semantic models produced by our unique linguistic compilation technology. gmSLAPI also includes classes to facilitate integrating with gmStudio and managing complex upgrade rules.

  • Improves organization of gmslAPI classes with namespaces
  • Improves handling conditions on nested rules in ScriptRules.xml
  • Improves ScriptRules logger to use the LogMessage API

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.

  • Improves standard ScriptRules.xml template
  • Improves standard translation templates to assume new C# dialect rather than the deprecated "SubSystem=loc" option
  • Improves Analytics Reports and Audits Reports script templates to use gmMetrics
  • Changes default handling of Line to migrate to MigrationSupport.Line rather than Label
  • Removes SubSystem=loc; The loc conventions are now the default for translation to C#
  • Removes SubSystem=lob; VB.NET bias is now the default for translation to VB.NET
  • Improves migration of VB6 File System Listbox controls to facilitate stub framework integration

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.

  • Samples updated to reflect changes to SubSystem changes
  • Samples updated to reflect changes to MigrationSupport.UI
  • Improves packaging of "All Samples" content