Migration de code VB3 vers VB.Net

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 :

  1. Création d’un fichier projet VB6 (fichier .vbp)
  2. Migration du projet VB6 vers .Net 2.0
  3. Migration du projet .Net 2.0 vers un projet .Net 4.5
  4. 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 :

me donne le fichier .vbp suivant (tronqué : un exemple complet est disponible sur la MSDN ici) :

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 Sourire. 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 :

image

4ème étape : Correction des bugs restants

On arrive ici à l’étape la plus laborieuse qui se fait en 2 grandes phases :

  1. 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.
  2. 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 :

  • 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