Dans le cadre d’un de mes projets, j’ai eu à migrer du code VB3 (16 bits évidemment) vers du code VB.Net en framework 4.5.
Au final, cela ne s’est pas avéré très compliqué. Voici le processus suivi :
- Création d’un fichier projet VB6 (fichier .vbp)
- Migration du projet VB6 vers .Net 2.0
- Migration du projet .Net 2.0 vers un projet .Net 4.5
- Corrections des “quelques” bugs restants
1ère étape : Création d’un projet VB6 (fichier .vbp)
Visual Studio 2008 (dernière version à être capable de migrer du VB6) nécessite impérativement un fichier vbp décrivant l’ensemble des fichiers contenus dans le projet. Heureusement, VB3 fournit un fichier .Mak donnant des informations sur la compilation de l’exécutable. L’idée est donc de mixer un fichier vbp vide avec le fichier .mak de mon projet vb3.
Ainsi le fichier .mak suivant :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
[sourcecode language="vb" padlinenumbers="true" gutter="false"] MODULE1.BAS MODULE2.BAS MODULE3.BAS FORM1.FRM FORM2.FRM ProjWinSize=0,1015,265,872 ProjWinShow=2 Command="D:test.ini" IconForm="dlgShellX" Title="MonTest" ExeName="MonTest.EXE" Path="D:" [/sourcecode] |
me donne le fichier .vbp suivant (tronqué : un exemple complet est disponible sur la MSDN ici) :
1 2 3 4 5 6 7 8 9 10 |
[sourcecode language="vb"] Type=Exe Reference=*G{00020430-0000-0000-C000-000000000046}#2.0#0#C:WINDOWSsystem32stdole2.tlb#OLE Automation Module=MODULE1.BAS Module=MODULE2.BAS Module=MODULE3.BAS Form=FORM1.FRM Form=FORM2.FRM ... [/sourcecode] |
2ème étape : Migration du projet VB6 vers .Net 2.0
Cette étape est la plus simple de toutes : il suffit d’ouvrir Visual Studio 2008 (je me répète : dernière version de Visual Studio à migrer du code VB) et d’ouvrir le fichier vbp.
Un assistant développé par Artinsoft se lance et fait tout le boulot pour vous . Cette société fournit aussi un guide de migration très complet : http://migrationguide.artinsoft.com/
3ème étape : Migration du projet .Net 2.0 vers .Net 4.5
Cette étape n’est pas très compliquée non plus, il vous suffit de lancer votre dernière version de Visual Studio (2013 ou 2012 généralement) et de modifier les propriétés du projet comme suit :
4ème étape : Correction des bugs restants
On arrive ici à l’étape la plus laborieuse qui se fait en 2 grandes phases :
- Corrections dans le code jusqu’à que l’application compile : opération fastidieuse et dont la durée est directement liée au volume de code.
- Exécution du code migré jusqu’à cela fonctionne correctement.
Plusieurs points de vigilance lors de ces 2 phases :
- La gestion des entiers : Short (VB3) = Byte (.Net), Integer (VB3) = Short (.Net) & Long (VB3) = Interger
- Dans le cadre du projet, la migration avait été facilitée par l’absence de contrôles graphiques à migrer. Notamment dans le cas où l’application existante utilise des composants graphiques du marché, la migration peut être plus compliquée car il est peu probable que l’on puisse retrouver un composant équivalent présentant les mêmes signatures
- La gestion des tableaux : en VB, ceux-ci commencent généralement à 1 (et non pas à 0)
- L’outil de migration dans sa mansuétude vous laisse des indications sur les potentiels problèmes. Ex :
1 2 3 4 |
[sourcecode language="vb" gutter="false"] 'UPGRADE_ISSUE: La propriété Screen.MousePointer de Screen ne prend pas en charge les pointeurs de souris personnalisés. Cliquez ici : 'ms-help://MS.VSCC.v90/dv_commoner/local/redirect.htm?keyword="45116EAB-7060-405E-8ABE-9DBB40DC2E86"' 'UPGRADE_WARNING: propriété Screen.MousePointer de Screen a un nouveau comportement. Cliquez ici : 'ms-help://MS.VSCC.v90/dv_commoner/local/redirect.htm?keyword="6BA9B8D2-2A32-4B6E-8D36-44949974A5B4"' [/sourcecode] |
- La 2ème phase a principalement consisté à
- Exécuter le code
- Corriger ce qui plantait
- Corriger ce qui ne donnait pas de bons résultats