September 2019

Ausgabe 34, Nummer 9

[Das erste Wort]

Visual Basic in .NET Core

Von Kathleen Dollard | September 2019

Ich begann vor mehr als zwei Jahrzehnten mit dem Schreiben von Visual Basic-Code, und ich verstehe, warum so viele Leute weiterhin in Visual Basic .NET programmieren. Es sind fast alle Features von C# sowie einzigartige Funktionen verfügbar, die es Ihnen leichter machen, den Fokus auf Ihre Software zu lenken. Dies ergibt sich aus den Möglichkeiten der Sprache selbst sowie aus Spracherweiterungen und der Sprachstabilität. Visual Basic umfasst auch einzigartige Produktivitätsfeatures wie XML-Literale und die direkte Ereigniseinbindung.

Mithilfe von Visual Basic .NET 16.0 sind die beliebtesten Visual Basic-Features jetzt auch in .NET Core 3.0 verfügbar. Die wesentlichen Bestandteile der Visual Basic .NET-Programmiersprache sind seit der frühen Entwicklungsphase in .NET Core vorhanden. Wenn Microsoft auch Visual Studio 16.3 und .NET Core 3.0 um Visual Basic 16.0 und C# 8.0 erweitert, können Entwickler eine noch umfangreichere Nutzung erwarten.

Da ich an der Umstellung zu .NET Core beteiligt war, habe ich die Technologie hinter den Spracherweiterungen kennengelernt: Sie umfasst spezielle Funktionen, Anwendungsmodelle und „Mein Subsystem“. Diese Features sind in „microsoft.visualbasic.dll“ enthalten (auch Visual Basic-Runtime genannt). Außerdem umfasst .NET Core 3.0 noch einige weitere Features (außer von Windows Forms abhängige (WinForms)).

Windows Forms

Visual Basic .NET hat eine besondere Verbindung zu WinForms, da Letzteres auf früheren Versionen von Visual Basic basiert. Unter all den Optionen für .NET-Programmierer bleibt WinForms die beste Wahl zum schnellen Erstellen von Anwendungen. Neben herkömmlichen Rollen bietet WinForms die Möglichkeit, schlanke Front-Ends für Dienste entweder für die Produktion oder für funktionale Prototypen besonders schnell lokal oder in der Cloud zu entwickeln.

Obwohl die WinForms-Bibliothek verfügbar ist, sind die WinForms-Designer nicht in Visual Studio 16.3 enthalten. Dies hat eine eingeschränkte Nutzung zur Folge, weshalb sich das Visual Basic .NET-Team auf den Teil der Spracherweiterungen für Visual Basic 16.0 konzentriert hat, der nicht auf WinForms basiert. Das bedeutet, dass Sie WinForms in .NET Core zwar mit Visual Basic verwenden können, allerdings nicht über das Dialogfeld „Projekteigenschaft“ verfügen, um das Visual Basic-Anwendungsmodell zu aktivieren. Sie benötigen daher entweder eine Sub Main()-Anweisung oder ein Startformular. Außerdem werden Sie feststellen, dass die Option „Meine Features“ noch nicht verfügbar ist.

Teile der Visual Basic-Runtime sind selbst bei unerwarteten Typen wie „My.Computer“ von WinForms abhängig. Die Runtime wird in zwei Teile aufgeteilt, die entweder von WinForms abhängig sind oder nicht. Der Teil, der von WinForms abhängig ist, ist in einem zukünftigen Release von Visual Basic verfügbar.

Über diese Einschränkungen hinaus wird mithilfe von Visual Basic .NET 16.0 ein Großteil der Features der Visual Basic-Runtime in .NET Core integriert. Auf diese Weise sind wichtige Funktionen wie „Fix“ und „Mid“ enthalten. Mithilfe von API-Port-Telemetriedaten konnte sich das Team auf die wichtigsten Komponenten konzentrieren und hat daher einige Funktionen mit sehr geringer Auslastung nicht übertragen.

Offenheit und Stabilität

Visual Basic .NET 16.0 umfasst die Finanz- und Dateifunktionen, die von Benutzern in der Community portiert wurden. Selbstverständlich ist Visual Basic .NET seit 2015 quelloffen (Open Source). Sie können in wichtigen Bereichen mitwirken, von denen viele nicht einmal annährend so komplex sind wie der Roslyn-Compiler. Außerdem können Sie dazu beitragen, dass die Visual Basic .NET-Community wieder aktiver auf Facebook und Gitter ist. Weitere Informationen zur Community und dem Sprachentwurf finden Sie auf der Visual Basic .NET-Sprachentwurfsseite (github.com/dotnet/vblang).

Für diese neueste Version von Visual Basic wurde die Runtime direkt portiert. Es wurden keine Änderungen vorgenommen oder Features bereinigt. In .NET Core sollte alles auf dieselbe Weise funktionieren wie im .NET Framework. All dies zeugt von der selbst auferlegten Verpflichtung des Visual Basic-Teams, ein hohes Maß an Stabilität zu gewährleisten. Diese Stabilität ist natürlich für die Abwärtskompatibilität von großer Bedeutung. Zudem soll aber auch sichergestellt werden, dass Code, der zu verschiedenen Zeitpunkten in der Weiterentwicklung von Visual Basic geschrieben wurde, weiterhin leicht lesbar ist. Neue Features werden nach und nach in Visual Basic .NET integriert. Es werden nur diejenigen hinzugefügt, die sich in Visual Basic bewährt haben.

Sie können mit Visual Studio Anwendungen für .NET Core oder .NET Framework (.NET 4.8 und niedriger) entwickeln. Obwohl .NET Framework noch über einen längeren Zeitraum unterstützt wird, bietet das Entwickeln von Anwendungen in .NET Core eine Reihe von Vorteilen (einschließlich paralleler und eigenständiger Bereitstellungen). Auf diese Weise werden Probleme in Form von Änderungen an Produktionscomputern vermieden, die durch die Installation einer anderen Anwendung auftreten. Für WinForms gibt es neue Features wie beispielsweise eine verbesserte Unterstützung für hohe DPI-Werte. Außerdem werden künftig neue Funktionen in .NET, Visual Basic .NET und C# nur in .NET Core verfügbar sein. In Visual Basic genießen Sie die Vorteile von Visual Basic 16.0, indem Sie .NET Core 3.0 (netcoreapp2.2) als Zielversion festlegen.

Plattformübergreifende Unterstützung

Visual Basic .NET ist auf .NET Core plattformübergreifend nutzbar, obwohl WinForms, Windows Presentation Foundation und andere Windows-spezifische Features nur unter Windows funktionieren. Informationen zu den unterstützten Betriebssystemen finden Sie unter aka.ms/net-core-3-0-supported-os. Wenn Sie eine Visual Basic .NET-Anwendung unter einem Betriebssystem wie Linux ausführen, funktionieren die plattformübergreifenden Features. Wenn Sie eine Visual Basic-Runtimefunktion aufrufen, die auf dieser Plattform nicht funktioniert, wird „System.PlatformNotSupportedException“ mit einer Meldung wie „<Methode> wird auf dieser Plattform nicht unterstützt.“ ausgegeben. Dies entspricht dem restlichen Verhalten von .NET. Wenn Sie also plattformübergreifend arbeiten, sollten Sie Ihre Anwendung unabhängig von der verwendeten Sprache über die Betriebssysteme hinweg testen, auf denen Sie die Anwendung bereitstellen möchten.

Einige Projekttypen werden auf .NET Core 3.0 nicht unterstützt. WebForms wird beispielsweise in keiner Sprache unterstützt. Visual Basic wird nicht von ASP.NET Core Razor unterstützt, sodass Sie MVC-Anwendungen nicht einfach portieren können. Obwohl Microsoft kein Webentwicklungsmodell anbietet, das zu 100 % konform mit Visual Basic ist, können Sie Visual Basic im Zusammenhang mit ASP.NET-WebAPI mit JavaScript-Font-Ends verwenden oder kombinierte Apps mit Ansichten in C#-Razor-Projekten erstellen.

API Portability Analyzer

Sie können die Kompatibilität Ihrer Anwendungen testen, indem Sie den API Portability Analyzer ausführen. Das Tool steht als Visual Studio-Erweiterung in der Visual Studio Gallery oder als Befehlszeilentool zum Download zur Verfügung. Weitere Informationen finden Sie unter aka.ms/api-portability. Der API Portability Analyzer gibt ein Arbeitsblatt mit dem Prozentsatz aus, der angibt, wie gut die Anwendung auf den ausgewählten Plattformen (hier .NET Core 3.0) funktioniert. Andere Registerkarten informieren Sie über die spezifischen in der Anwendung verwendeten bzw. die nicht unterstützten APIs.

Geben Sie uns Feedback!

Das Team möchte wissen, welchen Problemen Visual Basic .NET-Programmierer bei der Umstellung auf .NET Core begegnen. Ihr Feedback wird im nächsten Schritt berücksichtigt. Wenn Sie den Portability Analyzer ausführen und im VisualBasic-Namespace erforderliche Komponenten fehlen oder andere Visual Basic-spezifische Probleme auftreten, können Sie uns dies mitteilen, indem Sie auf der Visual Basic .NET-Sprachentwurfsseite (github.com/dotnet/vblang) ein Issue erstellen oder ein vorhandenes kommentieren.

Unsere Arbeit mit .NET Core ist auf die Zukunft von Visual Basic ausgerichtet. Durch den langfristigen Fokus von Microsoft auf .NET Framework 4.8 profitieren Sie von der Flexibilität von einer der produktivsten jemals entwickelten Programmiersprachen und können diese sowohl für neue als auch für alte Anwendungen verwenden.

Änderungen an Visual Studio- und .NET Core-Installationsprogrammen

Wenn Sie `dotnet--info` über die Eingabeaufforderung ausführen, wird eine Liste der installierten .NET Core-SDKs und -Runtimes angezeigt. Davon gibt es möglicherweise viel mehr als Sie erwartet haben.

Frühere Visual Studio- und .NET Core-Installationsprogramme haben ältere SDKs und Runtimes beim Aktualisieren oder Deinstallieren nicht entfernt. Obwohl Sie diese für das Anheften von SDKs über „global.json“ oder ältere Runtimes benötigen, befinden sie sich möglicherweise ungenutzt auf Ihrem Computer.

Ab Visual Studio 2019 16.3 verwaltet Visual Studio die Versionen der installierten .NET Core-SDKs und -Runtimes. Es wird nur eine Kopie des .NET Core-SDKs auf jedem Computer pro Kanal (Vorschauversion oder Release) beibehalten und die neueste Runtime installiert. Auf der Registerkarte „Einzelne Komponenten“ des Visual Studio-Installers können Sie frühere Runtimes zusammen mit deren Vorlagen und Zielpaketen als Ziel auswählen.

Wenn Sie das .NET Core 3.0-SDK über dotnet.microsoft.com/download herunterladen, werden frühere Patches für denselben Featureband entfernt. Wenn Sie beispielsweise das SDK 3.0.102 installieren, wird das SDK 3.0.100 deinstalliert. Vorschauversionen werden in diesem Band ebenfalls entfernt.

Jede SDK-Version kann alle früheren Versionen der Runtime als Ziel haben, sodass Sie in der Regel nur eine Version benötigen. Wenn Sie zusätzliche SDKs oder Runtimes benötigen, können Sie diese über dotnet.microsoft.com/download herunterladen.

Sie können .NET Core-SDKs und -Runtimes manuell entfernen oder mithilfe des kürzlich veröffentlichten .NET Core-Deinstallationstools unter Windows und macOS bereinigen (aka.ms/remove-sdk-runtime). Da SDKs nicht von Visual Studio nachverfolgt werden und das Entfernen der falschen SDKs Probleme verursachen kann, sollten Sie hier besonders vorsichtig sein. Führen Sie im Visual Studio-Installer die Option „Reparieren“ aus, wenn Sie eine von Visual Studio benötigte Komponente gelöscht haben.


Kathleen Dollardist Principal Program Manager im .NET Core-Team von Microsoft. Sie ist Program Manager für Visual Basic und an der Arbeit an den verwalteten Sprachen sowie der .NET Core-CLI und dem SDK beteiligt.


Diesen Artikel im MSDN Magazine-Forum diskutieren