Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Lesedauer 6 Min.

Visual Basic versc#ärft

Tools und Techniken, um Visual-Basic-Code in C# zu übersetzen
Grabenkämpfe um die „bessere“ Programmiersprache sind Geschichte – seit der Einführung von .NET liefern Visual Basic (VB) und C# gleichwertige Ergebnisse. Trotzdem kann es Gründe geben, um über eine Konvertierung von VB nach C# nachzudenken:
  • die verfügbaren VB-Entwickler im Unternehmen und auf dem Arbeitsmarkt,
  • der Wechsel des Sprachkontextes beim Entwickeln mehrerer Projekte,
  • die Ähnlichkeiten von C# zu Java und JavaScript,
  • das Angebot von Kursen und Codebeispielen.
Der erste Teil dieser Artikelserie stellt Tools vor, die Visual-Basic-Code nach C# übersetzen. Der zweite Teil wird zeigen, warum es sinnvoll sein kann, selbst Codekonverter zu schreiben, und wie dies geht.

Code Translator

Das Tool Code Translator von Carlos Aguilar Mares ist ein kostenloser Dolmetscher für Programmiersprachen im Internet [1]. Schon bei der Eingabe von Code erscheint darunter die Übersetzung inklusive Einfärbung von Schlüsselwörtern (Bild 1). Auch das Hochladen einzelner Dateien ist möglich. Code Translator spricht Visual Basic, C#, Java und TypeScript.
Einfacher VB-Code lässt sich gut in C# umwandeln. Auch generische Klassen werden unterstützt. Neuere Sprachkon­strukte wie LINQ oder Lambda-Ausdrücke kennt Code Translator zwar nicht, übersetzt diese aber trotzdem fröhlich – in offensichtlich falsches C#, ohne bedrohliche Fehlermeldungen anzuzeigen. Dieser Optimismus hat fast schon etwas Sympathisches.

VaryCode

VaryCode läuft ebenfalls im Browser und kennt Visual Basic, C#, Java, Ruby, Python und Boo [2]. Die zu übersetzende Programmiersprache erkennt der Dienst bei der Eingabe automatisch (Bild 2).
Anders als Code Translator beherrscht VaryCode alle aktuellen Sprachkonstrukte, übersetzt aber ausschließlich syntaktisch korrekten Code und vollständige Klassen. Vor allem Letzteres verleitet leicht zu dem falschen Eindruck, dass der Konverter nicht funktioniert; der Versuch, die schlichte Codezeile Dim i As Integer umzuwandeln, ruft im Ausgabebereich ein sehr einsilbiges error hervor.Ist man sich aber der Einschränkungen bewusst, erhält man gute Ergebnisse. Windows-Forms-Designer-Code und VB-spezifische Eigenheiten wie untypisierte Konstanten oder Eigenschaften mit Parametern übersetzt das Tool allerdings nicht korrekt.In der kostenlosen Variante begrenzt VaryCode die Anzahl der Konvertierungsvorgänge pro Tag und die Menge des übersetzten Codes. Darüber hinaus gibt es Angebote für 20 bis 180 US-Dollar pro Monat mit weniger oder ganz ohne Beschränkungen.

Instant C#

Instant C# [3] ist ein kommerzielles Desktop-Tool (Bild 3). Der Fokus liegt hier auf dem Konvertieren ganzer Projekte und Projektmappen von Visual Basic in C#.
Die Handhabung ist geradlinig und intuitiv: Projekt oder Projektordner auswählen, Zielordner angeben und auf Convert klicken, um die Umwandlung zu starten. Die Spalte Original Messages in der Conversion history-Tabelle zeigt mit der Anzahl von notes und ToDo, wie viel manuelle Arbeit wohl noch ansteht. Im Test schien der Hinweis auf „Formerly VB project-level imports“, der konsequenterweise in jeder konvertierten Klasse angemerkt wird, recht überflüssig. Erfreulicherweise lässt sich das Tool sehr weitgehend konfigurieren, und so kann der unerwünschte Hinweis über Options | Conversion Message Options ausgeschaltet werden (Bild 4).
Instant C# meistert Lambda-Ausdrücke, LINQ-Abfragen und konvertiert auch Windows-Forms-Code. Die VB-Fehlerbehandlung mit On Error Goto / On Error Resume Next hat es im Test erkannt und kommentiert, allerdings fehlerhaft oder in nicht kompilierbaren C#-Code übersetzt.Insgesamt wirkt der Konverter durchdacht und solide. Das Merkmal Compare Code Files(Bild 5), mit dem der misstrauische Entwickler komfortabel Datei für Datei Originalcode und konvertierten Code gegenüberstellen kann, hilft bei der abschließenden Qualitätsprüfung. Eine Einzellizenz von Instant C# kostet 159 US-Dollar.

VB.NET to C# Converter

Ein weiteres Tool, das Visual Basic in C# umwandelt, ist VB.NET to C# Converter [4] von VBConversions, mit knapp 500 US-Dollar je Einzellizenz das teuerste Werkzeug im Test. Es läuft wie Instant C# auf dem Desktop und kann mehrere Projekte gemeinsam konvertieren. Das Besondere bei diesem Tool sind der dreistufige Konvertierungsansatz und die Korrekturmöglichkeiten:Vor der eigentlichen Konvertierung werden VB-Eigenheiten oder Projekteigenschaften gesucht, die in C# Probleme machen könnten (Bild 6). Um die betreffenden Codestellen zu entschärfen, muss der Nutzer erfreulicherweise nicht zu Visual Studio wechseln, sondern öffnet per Klick auf den jeweiligen Hinweis die entsprechende Codedatei im internen Editor, der die entsprechende Stelle hervorhebt und es ermöglicht, sie direkt anzupassen. Mit der Schaltfläche Recheck Project lässt sich die Prüfung wiederholen.
Im zweiten Schritt stößt Convert to C# die eigentliche Konvertierung an und gibt gegebenenfalls Hinweise dazu auf der Registerkarte Conversion Notes (siehe Bild 7). Diese zeigt nach einer kurzen Erläuterung den VB-Code und den erzeugten C#-Code untereinander angeordnet an. Auch hier lässt sich der Code wieder direkt im Tool korrigieren; entweder in Visual Basic, um anschließend erneut zu konvertieren, oder im C#-Bereich. Letzteres ist nur bei einer Handvoll Korrekturen sinnvoll, denn diese Änderungen gehen bei einer erneuten Umwandlung verloren.
Der letzte Schritt ist die Kompilierung des generierten C#-Codes. Dadurch kommen Probleme ans Licht, die das Tool selbst nicht erkannt hat (Bild 8). Wiederum ist es möglich, im internen Editor zu korrigieren und dann die Konvertierung neu zu starten.
Wenn nichts hilft, dann hilft der hervorragende Support des Herstellers. Antwort auf E-Mail-Anfragen kam immer nach einem Tag. Korrigierte Versionen wurden innerhalb weniger Tage unkompliziert als Betaversion zum Download zur Verfügung gestellt.

Fazit

In Tabelle 1 ist eine zusammenfassende Übersicht über die getesteten Tools zu sehen. Die Software Code Translator empfiehlt sich, um mal eben die C#-Syntax für einen VB-Ausdruck herauszufinden, anstatt VB select case in C# in Stack Overflow zu suchen.

Tabelle 1: Getestete Tools und Dienste

Werkzeug Preis Hersteller Projekt(e) Weitere Sprachen Generische Klassen Überladen von Operatoren Get und Set Access Level Optionale Parameter Arrays im VB-Stil Lambda-Ausdrücke LINQ Windows Forms Nicht-typisierte Konstanten Eigenschaften mit Parametern On Error Goto / Resume
Code Translator kostenlos Carlos Aguilar Mares
VaryCode 0–180 $/Monat Varycode
Instant C# 159 $ Tangible Software Solutions
VB.NET to C# Converter 495 $ VBConversions
VaryCode hilft bei ganzen Klassen; für Mini-Projekte mit einer Handvoll Klassen kann das reichen.Wer größere Projekte von Visual Basic in C# umwandeln will, kommt um kostenpflichtige Werkzeuge wie Instant C# oder VB.NET to C# Converter nicht herum. Mit Letzterem hat der Autor kleine bis mittelgroße Anwendungen mit vertretbarem Aufwand zuverlässig in C# umgewandelt.An einer Legacy-Anwendung mit über 100.000 Zeilen Code inklu­sive VB6-Sprachelementen, Entity Framework, AutoMapper und vielem mehr ist der Konverter aber gescheitert. Die verbliebenen Fehler beim Kompilieren des C#-Codes per Hand zu korrigieren war unwirtschaftlich.Der zweite Teil zu diesem Thema in einer der nächsten dotnetpro-Ausgaben wird zeigen, wie Sie individuelle Codekonvertierungen selbst entwickeln können.

Neueste Beiträge

DWX hakt nach: Wie stellt man Daten besonders lesbar dar?
Dass das Design von Websites maßgeblich für die Lesbarkeit der Inhalte verantwortlich ist, ist klar. Das gleiche gilt aber auch für die Aufbereitung von Daten für Berichte. Worauf besonders zu achten ist, erklären Dr. Ina Humpert und Dr. Julia Norget.
3 Minuten
27. Jun 2025
DWX hakt nach: Wie gestaltet man intuitive User Experiences?
DWX hakt nach: Wie gestaltet man intuitive User Experiences? Intuitive Bedienbarkeit klingt gut – doch wie gelingt sie in der Praxis? UX-Expertin Vicky Pirker verrät auf der Developer Week, worauf es wirklich ankommt. Hier gibt sie vorab einen Einblick in ihre Session.
4 Minuten
27. Jun 2025
„Sieh die KI als Juniorentwickler“
CTO Christian Weyer fühlt sich jung wie schon lange nicht mehr. Woran das liegt und warum er keine Angst um seinen Job hat, erzählt er im dotnetpro-Interview.
15 Minuten
27. Jun 2025
Miscellaneous

Das könnte Dich auch interessieren

UIs für Linux - Bedienoberflächen entwickeln mithilfe von C#, .NET und Avalonia
Es gibt viele UI-Frameworks für .NET, doch nur sehr wenige davon unterstützen Linux. Avalonia schafft als etabliertes Open-Source-Projekt Abhilfe.
16 Minuten
16. Jun 2025
Mythos Motivation - Teamentwicklung
Entwickler bringen Arbeitsfreude und Engagement meist schon von Haus aus mit. Diesen inneren Antrieb zu erhalten sollte für Führungskräfte im Fokus stehen.
13 Minuten
19. Jan 2017
Bausteine guter Architektur - Entwurf und Entwicklung wartbarer Softwaresysteme, Teil 2
Code sauberer gestalten anhand von wenigen Patterns und Grundhaltungen.
6 Minuten
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige