Tutoriel migration de Visual Basic 6 vers .NET
...
Visual Basic 6 (VB6) a connu un vif succès et a été la plate-forme de développement la plus répandue dans l’histoire de Microsoft. Certaines études indiquent que le nombre de lignes de code VB6 en production pourrait atteindre plusieurs milliards et qu’il y a plus de 3 millions de développeurs VB6 actifs dans le monde.
Suite au lancement de .NET en 2002, Microsoft a sensiblement transféré ses investissements vers cette nouvelle plate-forme. Le plan d’évolution de VB6 a été stoppé et Microsoft a annoncé l’abandon progressif de cet environnement de développement en avril 2008.
Les organisations qui ont des applications VB6 en production ont commencé à subir différents désagréments, qui ont empiré avec le temps :
Des coûts de maintenance élevés en raison de l’inefficacité de l’environnement de développement et de la pénurie de développeurs VB6 compétents ;
Un manque de souplesse qui rend difficile le respect de délais de mise sur le marché acceptables ;
Les risques associés à l’exécution d’applications sur une plate-forme non prise en charge ;
Des performances et une extensibilité limitées.
La plupart des organisations qui sont dans cette situation se reconnaîtront dans ce résumé. Selon une étude récente1 réalisée par Aberdeen Group, elles recherchent des solutions viables pour sortir leurs applications VB6 de l’impasse de l’obsolescence. La migration de ces applications vers .NET est une solution évidente et, dans la plupart des cas, comme le montre aussi cette étude, cette migration apporte des avantages concrets et permet diverses économies : délai de mise sur le marché, coûts de développement et performances. Cependant, beaucoup d’organisations repoussent indéfiniment la décision de migration en raison de son coût élevé et des risques de perturbations de l’activité.
Afin de proposer des solutions à la situation que nous venons de décrire, Avanade et ArtinSoft ont élaboré ensemble une méthodologie de migration. Elle s’appuie sur les technologies développées par ArtinSoft et sur l’expérience acquise par les deux entreprises sur des projets concrets de migration. Elle est conçue pour prendre en charge l’ensemble du cycle de migration VB6, depuis la définition initiale du périmètre et l’évaluation du portefeuille, jusqu’à la migration en elle-même. Elle ne se limite pas aux aspects techniques de la transformation mécanique du code VB6 vers .NET. Elle couvre également le processus plus général qui intègre toutes les exigences, les objectifs et les contraintes applicables afin de garantir que la solution est conforme aux enjeux de l’entreprise et maximise les bénéfices.
Le reste du présent document expose en détail le processus complet de migration vers .NET et en couvre de très nombreux aspects.
Bien que ce document puisse être lu du début à la fin, certaines sections s’adressent plutôt à des publics spécifiques :
Les sections d’introduction (1, 2 et 3) décrivent les situations récurrentes rencontrées dans des scénarios réels de migration de VB6. Elles exposent en particulier les motifs de la migration, les alternatives au renouvellement à envisager et le business case. Elles comprennent également une description générale du cadre utilisé pour déterminer la meilleure approche de renouvellement, avec une focalisation spécifique sur les solutions qui permettent de sécuriser la migration et de la rendre plus rentable. Ces sections s’adressent plutôt à des décideurs qui souhaitent comprendre les options de renouvellement disponibles et leurs conséquences respectives.
La section 4 donne une description détaillée de notre méthodologie de migration. Elle est structurée en fonction des jalons principaux et des activités essentielles d’un cycle de migration VB6 classique : préparation, évaluation et migration. Les phases de préparation et d’évaluation sont conçues de manière à anticiper les éventuels problèmes liés à la migration et à minimiser les coûts et les risques associés. La phase de migration est un processus itératif conçu pour assurer une transition aisée des applications VB6 vers .NET.
.. … …
Migration VB.NET
Maintenant que notre programme est fonctionnel et parfaitement compilable sous Visual Basic 6, nous allons le migrer en VB.NET. Pour cela, on lance Visual Basic .NET (ou Visual Studio .NET) et on fait :
- ‘FICHIER > OUVRIR > PROJET’
- Aller chercher le fichier VBP du projet VB 6
A ce moment, le logiciel détecte que le projet est une version pour VB6 et ouvre automatiquement l’écran proposant la migration. Cet écran vous résume les prochaines étapes avant de pouvoir avoir le projet en VB.NET.
L’étape suivante permet de donner à VB.NET le type d’application finale (EXE ou DLL), dans notre cas, c’est un EXE simple, donc on passe à la 3ème étape. Celle-ci demande le répertoire de sauvegarde du projet VB.NET (en effet, il prendra une copie du projet VB6 et donc ne risque pas de détruire le projet d’origine.
Enfin, l’étape suivante lance la conversion.
Une fois cette conversion faite, on obtient un écran dans le même esprit que VB6, on va donc ouvrir le code de la FORM en cliquant avec le Bouton droit de la souris sur le ‘UptimeFeuille.vb’, et choisissant ‘Afficher Le Code’.
Maintenant, il reste à corriger les erreurs de migration, elles sont repérables dans les sources par les commentaires marqués par UPGRADE_WARNING: , à la suite de ça figure la raison de l’alerte avec un lien URL pour voir l’aide complète et la méthode pour résoudre le problème.
Dans ce cas ci on trouvera des alertes concernant une propriété non existante par défaut, en effet, sous VB6, les variables utilisées pouvaient ne pas être typées, voir même ne pas être définies. Or en VB.NET, toutes les variables doivent être définies et typées. VB.NET est comme tout l’ensemble des langages de .NET sont fortement typés.
Ainsi les alertes issues de cette migration seront :
'UPGRADE_WARNING: Impossible de résoudre la propriété par défaut de l'objet TestPluriel.
Cliquez ici --> 'ms-help://MS.VSCC/commoner/redir/redirect.htm?keyword="vbup1037"' ou
'UPGRADE_WARNING: Impossible de résoudre la propriété par défaut de l'objet TxtJour. Cliquez
ici --> 'ms-help://MS.VSCC/commoner/redir/redirect.htm?keyword="vbup1037"'
Donc, à ce stade, il y a 2 solutions, soit on revient dans les sources VB6 sous VB6 et définir toutes les variables qui ne l’étaient pas, donc :
Dans la fonction Updatefctn() :
On remplace :
Dim TxtJour, TxtHeure, TxtMinute, TxtSeconde As String
Par :
Dim TxtJour As String, TxtHeure As String, TxtMinute As String, TxtSeconde As String
Dans la fonction TestPluriel(…) :
Il faut spécifier le type de donnée résultant de la fonction, en l’occurrence rajouter à la fin de la définition de la fonction : AS String
A ce moment, si vous avez corrigé toutes les erreurs affichées dans VB.NET, dans le projet d’origine sous VB6, vous pouvez réimporter le projet dans VB.NET. Si aucune erreur n’apparaît dans le fichier source de VB.NET, c’est qu’il n’y a plus d’erreur (du moins du a l’importation), il reste maintenant à compiler le projet.
Vous obtiendrez alors ceci :
Maintenant pour obtenir l’exécutable (qui ne fonctionnera que sur la machine ayant le framework installé), il faut faire :
Générer > Générer la Solution
Vous obtiendrez donc le fichier exécutable dans le répertoire BIN qui est dans celui de votre projet.