DevTrain

Autor: Hannes Preishuber

Migration von VB Code nach .NET

Dieses Portal behandelt Themen für Webentwickler. Visual Basic ist eigentlich nicht die  Sprache für den Webentwickler trotzdem kann es Fälle geben wo man mit VB arbeitet.

Erfassungsmaske mit VB
Active X Control
COM DLL (3 tier)

Die gute Nachricht ist, daß Microsoft in Visual Studio .NET zum Thema Portierung die beste Hilfe für Vb bereit stellt. Die schlechte Nachricht ist, daß dies auch nicht vollautomatisch geht wie z.B. beim Umstieg von VB5 auf VB 6. Gänzlich ausgeschlossen ist die Portierung von Webclasses, die aber selten genutzt wurden.

Zunächst einmal muss man die architekturellen und semantischen Unterschiede in VB. NET betrachten. Beginnen wir mit der Architektur und den Auswirkungen auf ein simples Form.

Im Gegensatz zu VB ist alles eine Klasse. Auch das Formular an sich, das bisher in einer FRM Datei gespeichert wurde, wird im VB Code dynamsich erstellt.
Der Namespace für die Formulare heist System.Windows.Forms und muss in jedes Forumlar vererbt werden.

Friend Class Form1
 Inherits System.Windows.Forms.Form

Die Controls auf den Forms werden dann, einfach instanziert und zugewiesen.

Private components As System.ComponentModel.IContainer
 Public WithEvents Text1 As System.Windows.Forms.TextBox
 Me.Text1 = New System.Windows.Forms.TextBox()
 Me.Text1.Text = "Text1"

In Visual Studio .NET ist ein Assistent enthalten, der diese Konvertierungsarbeit übernehmen kann. Der Visual Basci Upgrade Wizard startet automatisch sobald ein altes Vb Projekt geöffnet wird. Er legt dann ein neues Verzeichnis für die Anwendung an und erstellt dort den Sorucecode und alle Files.

Hinweis: Da Visual Studio viele Controls (alte OCX ect) nicht kennt, empfiehlt es sich VB 6 und VB .NET parallel zu installieren. Wenn das nicht geht muss die Anwendung die portiert werden soll, zumindest komplett installiert werden. Das lässt sich am leichtesten mit dem Verpackungsassistent aus VB 6 erledigen.

Nach erfolgtem Upgrade wird ein Report im HTMl Format erstellt. In der Task Liste erscheinen die Aufgaben die noch gemacht werden müssen um den Code zu kompilieren.

Da in VB.NET die alten OCXe nicht mehr vorhanden sind, erstellt der Wizard Wrapper Klassen die im BIN Verzeichnis abgelegt werden und bindet diese in das Form ein.
Wenn z.B. ein HFlexgrid enthalten war gibt es die Datei AxInterop.MSHierarchicalFlexGridLib_6_0.dll die im Projekt verwendet wird. Hier gibt es auch bereits Problempunkte. Wenn das Visual Studio 6 nicht installiert ist, haben Sie keine Design Time Lizenz für das Control und das Formular kann nicht angezeigt werden. Hier hilft nur dier alte Studio Version zu installieren.

Viele Controls wie das Shape oder DAO werden schlichtweg ignoriert und(oder) durch Labels ersetzt. Es kann auch passieren, das ein komplettes Formular nicht migirert wird. Die Hinweise darauf finden sich in der Datei mit der Endung .LOG.

    <Issue
                Type = "Design"
                Number = "103"
            >Unexpected error translating file Form2</Issue>
            <Issue

       
Der nächste Blick fällt in den Code. Hier die Änderungen im Überblick.

Kein Variant mehr: jetzt Object
Kein Set mehr: jetzt NEW
Sub ohne Klammern: jetzt Immer in Klammern setzen ( msgbox("HallO")
Default Eigenschaften: jetzt immer Property angeben (rs.fields(0).Value)
LET in Klassen: jetzt nur mehr SET und GET für das setzen und lesen von Probertys
Null: jetzt IsNull() es gib keinen NULL Value mehr

Viele dieser Änderungen führt der Migration Wizard selbständig durch. So wird bei einer Textbox automatisch die fehlende Eigenschaft text ergänzt

textbox1.text="text"

Dort wo er es nicht kann, werden in den Source Code Kommentare eingefügt, die das spätere bearbeiten erleichtern.

'UPGRADE_WARNING: Couldn't .....

Am einfachsten lassen sich klassische COM DLLs migrieren. Die benötigten externen COM DLLs werden zwar über Wrapper Klassen eingebunden, können aber natürlich durch manuelles Coden wieder durch NET Klassen ersetzt werden.


Dieser Text bezieht sich auf die BETA2 von Visual Studio .NET. Es ist zu erwarten, das gerade in Hinblick auf die Portierung noch Änderungen in den Features erfolgen werden.

 

 


Erfasst am: 11.09.2001 - Artikel-URL: http://www.devtrain.de/news.aspx?artnr=623
© Copyright 2003 ppedv AG - http://www.ppedv.de