I recently automated a simple VB6 desktop to web migration using the Wisej framework. 

See the screen shot below

The works much like the original even including the keyboard support.

For this sample there were only a few differences from simply letting gmStudio do a standard VB6 to WinForms upgrade:

For this first test, I simply used the gmPL post-editting commands make the replacements.  (see “Quick and Dirty” rules below)

In an actual upgrade solution, I would create a generalized Wisej upgrade configuration that could be used with many different VBPs and code files and also develop a set of rules files to deal with third-party controls.  In a project context, we would further customize the rules so that various customer-specific requirements are automated such as other Wisej/.NET standards.

My experience with Wisej is limited to only a few hours of paying around, but I find it to be an an incredibly sophisticated development and runtime framework.  I would love to say more, but I certainly cannot do it justice here.  Visit Wisej on the web to learn more. 

“Quick and Dirty” upgrade rules to rewrite from VB6 (desktop) for Wisej/C# (web)

   <Author>
   <Fix host="Calculator" name="PostEdit">
   <Replace name="change namespace Winforms to Wisej.Web" >
   <OldBlock><![CDATA[using System.Windows.Forms;]]></OldBlock>
   <NewBlock><![CDATA[using Wisej.Web;]]></NewBlock>
   </Replace>
   <Replace status="active" name="remove using WinForms">
   <OldBlock><![CDATA[System.Windows.Forms.]]></OldBlock>
   <NewBlock><![CDATA[Wisej.Web.]]></NewBlock>
   </Replace>
   <Replace status="active" name="remove FlatStyle">
   <OldBlock><![CDATA[FlatStyle]]></OldBlock>
   </Replace>
   <Replace status="active" name="cleanup using System.Data">
   <OldBlock><![CDATA[using System.Data;]]></OldBlock>
   </Replace>
   <Replace status="active" name="cleanup using System.CompilerServices">
   <OldBlock><![CDATA[using Microsoft.VisualBasic.CompilerServices;]]></OldBlock>
   </Replace>
   <Replace name="rework old MenuStrip initialization boilerplate, not needed">
   <OldBlock><![CDATA[
            this.MainMenuStrip = this.mainMenu1;
            this.mainMenu1.AutoSize = false;
            this.MainMenuStrip.Height = 20;
            this.Controls.Add(this.mainMenu1);
   ]]></OldBlock>
   <NewBlock><![CDATA[
            this.Menu = this.mainMenu1;
   ]]></NewBlock>
   </Replace>
   <Replace status="active" name="rename MenuStrip class">
   <OldBlock><![CDATA[MenuStrip]]></OldBlock>
   <NewBlock><![CDATA[MainMenu]]></NewBlock>
   </Replace>
   <Replace status="active" name="rename ToolStripMenuItem class">
   <OldBlock><![CDATA[ToolStripMenuItem]]></OldBlock>
   <NewBlock><![CDATA[MenuItem]]></NewBlock>
   </Replace>
   <Replace name="Remove hideSelection setting (default?)">
   <OldBlock><![CDATA[.HideSelection = ]]></OldBlock>
   </Replace>
   <Replace name="Rename BorderStyle enum entry">
   <OldBlock><![CDATA[.BorderStyle.Fixed3D;]]></OldBlock>
   <NewBlock><![CDATA[.BorderStyle.Solid;]]></NewBlock>
   </Replace>
   <Replace name="Rename BorderStyle enum entry">
   <OldBlock><![CDATA[.BorderStyle.FixedSingle;]]></OldBlock>
   <NewBlock><![CDATA[.BorderStyle.Solid;]]></NewBlock>
   </Replace>
   <Replace status="active" name="rework ShortcutKeys">
   <OldBlock><![CDATA[ShortcutKeys = Keys.Control | Keys.]]></OldBlock>
   <NewBlock><![CDATA[Shortcut = Shortcut.Ctrl]]></NewBlock>
   </Replace>
   <Replace name="Change menu.Items property name">
   <OldBlock><![CDATA[this.mainMenu1.Items.AddRange(new Wisej.Web.ToolStripItem]]></OldBlock>
   <NewBlock><![CDATA[this.mainMenu1.MenuItems.AddRange(new Wisej.Web.MenuItem]]></NewBlock>
   </Replace>
   <Replace name="change menu.DropDownItems name">
   <OldBlock><![CDATA[this.mnuEdit.DropDownItems.AddRange(new Wisej.Web.ToolStripItem[] {]]></OldBlock>
   <NewBlock><![CDATA[this.mnuEdit.MenuItems.AddRange(new Wisej.Web.MenuItem[] {]]></NewBlock>
   </Replace>
   <Replace name="rename FormBorderStyle enum entry">
   <OldBlock><![CDATA[.FormBorderStyle.FixedSingle;]]></OldBlock>
   <NewBlock><![CDATA[.FormBorderStyle.Fixed;]]></NewBlock>
   </Replace>

   <ReplaceFile name="Override csproj file using Wisej.csproj"
       lang="csproj"    
       source="Calculator.csproj"
       target="..\usr\Wisej\Wisej.csproj"
   />
   <ReplaceFile name="Override startup file using program.cs"
       lang="csproj"    
       source="Calculator_StartUp.cs"
       target="..\usr\Wisej\program.cs"
   />
   </Fix>   
   </Author>