zurück zum Artikel

Microsoft spart Entwicklerzeit in Visual Studio 2017

Werkzeuge
Microsoft spart Entwicklerzeit in Visual Studio 2017

Mit der neuen Version der IDE geht Microsoft das Thema der langwierigen Set-ups und auch die lästige Ladedauer größerer Projektmappen an. Darüber hinaus bietet Visual Studio Verbesserungen beim Editor, Debugger und der Suche, um die Produktivität zu steigern.

Nach fünf Preview-Versionen zwischen April und Oktober 2016 unter dem Titel Visual Studio "15" ist am 16. November der Release Candidate von Microsofts nächster Entwicklungsumgebung erschienen [1]. Das Produkt wird aber nicht Visual Studio 2016 heißen, wie Microsoft es schon einmal kurzzeitig veröffentlicht hatte [2], sondern das Jahr 2017 im Namen tragen. Ein Termin für die endgültige Version ist noch nicht bekannt.

Modulare Installation

Das Installationsprogramm präsentiert sich in komplett neuem Gewand mit Kacheln, die jeweils eine kurze Erklärung zu den einzelnen Komponenten enthalten (s. Abb. 1).

Das Installationsprogramm von Visual Studio 2017 ist stärker modularisiert als bei den Vorgängern (Abb. 1).
Das Installationsprogramm von Visual Studio 2017 ist stärker modularisiert als bei den Vorgängern (Abb. 1).

Die Minimalinstallation, Visual Studio Core Editor, umfasst nur noch 748 MByte und ist in drei Minuten erledigt. Sie bietet für einige Sprachen (s. folgende Tabelle zu den unterstützten Sprachen in Visual Studio 2017) Syntaxfarbhervorhebung und einfache Eingabevervollständigung für die Sprachkonstrukte beziehungsweise im Dokument vorhandene Wörter, aber kein echtes IntelliSense.

Programmiersprachen mit Syntaxfarbhervorhebung und einfache Eingabevervollständigung Bat, Clojure, CoffeeScript, CSS, Docker, F#, Groovy, INI, Jade, Javadoc, JSON, LESS, Lua, Make, Markdown, Objective-C, Perl, PowerShell, Python, Rust, ShaderLab, SQL, YAML
Zusätzlich mit Code-Schnipseln CMake, C++, C#, Go, Groovy, HTML, Java, Javadoc, JavaScript, Lua, Perl, PHP, R, Ruby, ShellScript, Swift, XML
Zusätzlich mit Navigationsfunktionen C++, C#, Go, Java, JavaScript, PHP, TypeScript, Visual Basic .NET
Durch zusätzliche Workloads ist der komplette Editor mit IntelliSense verfügbar C++, C#, JavaScript, TypeScript, Visual Basic .NET, PowerShell, Python, F#

Zudem sind keine Projektvorlagen installiert, und man kann keine bestehenden Projekte öffnen, sondern nur einzelne Dateien, oder sich über die neue Funktion File | Open | Folder den Inhalt eines Dateisystemordners im Projektmappen-Explorer anzeigen lassen. Mit der Funktion, die Microsoft als "Projectless source code editing" und "Any Code" bezeichnet, gibt es grundsätzlich auch IntelliSense und Debugging, sofern die entsprechenden Zusatzkomponenten für die Sprachen installiert sind.

Neues Feature: Workloads

Die einzelnen installierbaren Komponenten sind in Visual Studio 2017 als "Workloads" bezeichnet. Einen Workload können Entwickler jederzeit durch erneutes Aufrufen des Set-ups hinzufügen. Auch bei der Suche im Quick-Launch-Eingabefeld zeigt die IDE installierbare Workloads zum eingegebenen Suchbegriff. Beim Öffnen einer Projektmappe bietet Visual Studio an, fehlende Workloads nachträglich einzureichen. Wenn Benutzer das verneinen, bleiben die betroffenen Projekte in der Projektmappe erhalten, sind aber als "unavailable" gekennzeichnet. Mit Install Missing Features auf Projektmappenebene können Entwickler jederzeit die benötigten Workloads anfordern.

Die vollständige Editorunterstützung für die Programmiersprachen Visual Basic .NET und C# inklusive Compiler hat einen Umfang von 688 MByte. Für die Unterstützung von Desktop-Anwendung mit WPF (Windows Presentation Foundation) und Windows Forms sowie Konsolenanwendungen sind es 2,6 GByte, für Webanwendungen 3,51 GByte und für Windows Universal Apps sogar 6,65 GByte. Wegen Überschneidungen machen aber diese drei Workloads zusammen "nur" 8,25 GByte aus.

Bei den letzten Visual-Studio-Versionen hatten die Nutzer die Wahl, die Installation auf Basis einer ISO-Datei (rund 6 GByte) oder eines Webinstallers (etwa ein MByte), der die gewählten Komponenten aus dem Internet nachlädt, durchzuführen. Bei Visual Studio 2017 gibt es derzeit nur den Webinstaller. Nutzer können sich aber für die Offline-Installation an einem Rechner mit Internetverbindung ein sogenanntes "Offline Layout" mit den gewünschten Workloads zusammenstellen und die Einrichtung damit später auf anderen Rechnern ohne Internetverbindung durchführen.

Erweiterungen, IntelliSense und Refactoring

Neues Format für Erweiterungen

Die Aufteilung von Visual Studio 2017 in Komponenten bringt mit sich, dass es für die Visual-Studio-Erweiterungen eine neue Version 3.0 der Formats Visual Studio Integration Extension (VSIX) gibt. In ihr kann man eine Erweiterung in <Prerequisites> im Manifest definieren, von welchen Workloads sie abhängig ist.

In Visual Studio 2017 lassen sich zwar noch ältere Erweiterungen installieren, sie funktionieren aber gegebenenfalls nicht, wenn die notwendigen Workloads fehlen. Zu beachten ist, dass die Liste unter Tools | Extensions und Updates zwar Erweiterungen in älteren Formaten anzeigt, aber nur solche, die explizit deklarieren, dass sie Visual Studio 2017 unterstützen. Versuche des Autors haben ergeben, dass sich aber auch Erweiterungen problemlos installieren lassen, die Unterstützung nur für Visual Studio 2015 deklarieren. Sie muss man lediglich eigenständig aus dem Visual Studio Marketplace [3], bisher Visual Studio Gallery genannt, herunterladen.

Die Benutzerfreundlichkeit bei der Installation von Erweiterungen steigt, weil Anwender nicht mehr wie bisher Visual Studio nach der Einrichtung jeder einzelnen Erweiterung neu starten müssen, sondern mehrere Erweitungsinstallationen vor dem Neustart ausführen können. Die Liste der Erweiterungen verbreitet Microsoft nun über seine Cloud automatisch an alle Visual-Studio-Installationen, die mit demselben Microsoft-Account verbunden sind. Die Erweiterungen installieren sich aber nicht automatisch auf allen beteiligten Rechnern, sondern werden Benutzern lediglich unter Tools | Extensions and Updates in einer Liste "Roaming Extension Manager" angeboten. Entwickler können für jede Erweiterung das Roaming mit der Schaltfläche Stop Roaming ausschalten.

In der aktuellen RC-Version gab es im Praxistest noch einige Probleme mit der Erweiterungsinstallation. Erweiterungen erschienen auf anderen Computern erst nach einigen Minuten in der Liste. Einige weitere ließen sich dort nicht herunterladen, weil Visual Studio meldete: "could not be found on the
gallery". Installationen, die heruntergeladen werden konnten, meldeten dann aber, dass diverse laufende Visual-Studio-Prozesse (ServiceHub*.exe und PerfWatson2.exe) eine Installation verhindern, obwohl Visual Studio bereits geschlossen war. Erst nach 30 bis 60 Sekunden waren diese Prozesse beendet, und ein Klick auf Retry (s. Abb. 2) führte die Installation zum Ende.

Visual Studio 2017 blockiert sich viele Sekunden lang selbst bei der Installation von Erweiterungen (Abb. 2).
Visual Studio 2017 blockiert sich viele Sekunden lang selbst bei der Installation von Erweiterungen (Abb. 2).

Die neue Leichtigkeit

Zu den Neuerungen der Installation gehört auch, dass Visual Studio nicht mehr so viele Informationen in die Windows-Registry und den Global Assembly Cache schreibt. Stattdessen schreibt die IDE nun einige Konfigurationsdaten in Dateien in den Ordner /AppData/Local/Microsoft/VisualStudio und installiert die DLLs im Anwendungsordner C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise. Microsoft nennt das "Low Impact Installation" und fördert damit, dass verschiedene Visual-Studio-Versionen und sogar unterschiedliche Varianten einer IDE-Version auf einem Rechner ohne Probleme koexistieren können.

Als "Lightweight Solution Load" bezeichnet Microsoft eine Optimierung in Visual Studio 2017, bei der die geladenen Projekte zwar im Solution Explorer als Ast erscheinen, aber die Projektdatei erst geöffnet wird, wenn Entwickler das Projekt aufklappen. Dadurch wird in Projektmappen, die aus mehreren Projekten bestehen, die notwendige Initialisierungszeit für Projekte vermieden, die Entwickler gar nicht (direkt) brauchen. Sie können Lightweight Solution Load zentral für alle oder einzelne Projektmappen aktivieren. Visual Studio schlägt den Benutzern bei größeren Projektmappen die Aktivierung vor.

Im Projektmappen-Explorer können Anwender zwischen der bisher bekannten Projektansicht und einer rohen Sicht auf das Dateisystem (Folder View) umschalten. Der Solution Explorer bietet nun endlich eine eigene Suchfunktion, die mit Strg + T zu aktivieren ist (s. Abb. 3). Visual Studio 2017 öffnet dann jeweils im Editorfenster die aktuell markierte Fundstelle in der Trefferliste.

Der neue Ast "Service Capabilities" (s. Abb. 3) in einem Projekt tritt an die Stelle der erst in Visual Studio 2015 eingeführten "Connected Services". Derzeit bietet Visual Studio hier nur die Integration mit den nichtrelationalen Datenspeichern für Tabellen, BLOBs und Warteschlangen in Microsoft Azure an. Über Find more Services kann man hier zukünftig weitere Cloud-Dienste einbinden.

Microsoft spart Entwicklerzeit in Visual Studio 2017


IntelliSense und Refactoring verbessert

Im Editor-Fenster zeigen nun sogenannte Structure Guide Lines die Einrückungstiefe besser. Dieses Feature hat Microsoft aus den Visual Studio Power Tools [4] ins Produkt übernommen. Allerdings sind die Hilfslinien in Visual Studio 2017 nicht in verschiedenen Farben gemäß Einrückungsebene, sondern grau gestrichelt (s. Abb. 4). Derzeit profitieren nur C#-, Visual-Basic-.NET- und XAML-Entwickler davon.

Struktur Guidelines
Struktur Guidelines

Die IntelliSense-Eingabeunterstützung ist die Kernfunktion der Produktivität für Entwickler im Visual-Studio-Editor. Auch nach vielen Jahren kommt Microsoft hier noch auf neue Ideen. Entwickler können nun die Vorschlagsliste nach Sprachkonstrukttyp filtern, also nach Namensräumen, Klassen, Schnittstellen,
Enumerationen, Delegaten, Methoden, Variablennamen sowie nach Sprachschlüsselwörtern und Codeschnipselnamen (s. Abb. 5). Wer sich durch die zusätzlichen Symbole abgelenkt fühlt, kann sie unter Options | Text Editor | C# | IntelliSense | Show Completion Item Filters ausschalten.

Hilfreich für lange Vorschlagslisten: das Filtern nach Typ (Abb. 5)
Hilfreich für lange Vorschlagslisten: das Filtern nach Typ (Abb. 5)

Die Trefferliste bei der altbekannten Funktion "Find all References" ist nun übersichtlicher, weil die Ergebnisse nach verschiedenen Kriterien wie Projektname, Dateiname und Typname gruppierbar sind. Ergebnisse mehrerer Suchvorgänge können sich Entwickler nun parallel anzeigen lassen. Auch die Funktion "Goto Line" (Strg + G) ist kein modaler Dialog mehr, sondern schmiegt sich wie die Volltextsuche in die obere rechte Ecke des Editors ein. Über das neue Eingabefeld kann man auch Dateien, Typen und Mitglieder per Namenssuche finden.

Das Refactoring von Programmcode unterstützt die IDE nun mit weiteren Vorschlägen in der mit Visual Studio 2015 eingeführten Glühbirne:

Stark erweitert hat Microsoft die "Code Style"-Regeln, die Entwickler in den Text-Editor-Optionen für C# und Visual Basic einstellen können. Bisher gab es nur vier Regeln zum Einsatz von this/Me, var/Dim und der Verwendung von .NET-Klassennamen (z. B. Int64) anstelle von sprachspezifischen Typnamen (long). Nun können Entwickler diese Optionen situationsbezogen steuern und zudem Namensregeln definieren, die der Editor schon bei der Eingabe prüft und gegebenenfalls bemängelt.

Namensregeln lassen sich für zahlreiche Bezeichnerarten (Klassen, Schnittstellen, Properties, Methoden, Enumerationen usw.) auch abhängig von den verwendeten Sichtbarkeiten (public, private, protected, internal) steuern. So können Entwickler für private Klassen andere Namensregeln als für öffentliche vorsehen. Bei den Namensregeln sind Art der Groß-/Kleinschreibung (Pascal Casing, Camel Casing, First Word Upper, All Upper, All Lower), Pre- und Suffixe sowie Worttrennzeichen einstellbar.

Fehlersuche, XAML und .NET Core

Produktivere Fehlersuche

Beim Debugging in Visual Studio bot die Entwicklungsumgebung bisher bei aufgetretenen Laufzeitfehlern für Native Code und Managed Code zwei Dialoge, die nicht alle Informationen (z. B. eingebettete Exception-Objekte) auf einen Blick, sondern erst nach zum Teil mehreren Mausklicks zeigten. Microsoft hat in Visual Studio 2017 nun einen neue "Exception Helper"-Sprechblase eingeführt, die innere Fehler direkt anzeigt (s. Abb. 6).

Der Exception Helper zeigt ein Fehlerobjekt, das zwei untergeordnete Fehler kapselt (Abb. 6).
Der Exception Helper zeigt ein Fehlerobjekt, das zwei untergeordnete Fehler kapselt (Abb. 6).

Bei dem häufigen NullReference-Fehler zeigt der Exception Helper jetzt das verursachende Objekt an – allerdings leider nicht, wenn es ein innerer Fehler ist (s. Abb. 7). Lästig war in bisherigen Visual-Studio-Versionen, dass die Fehleranzeige beim Debugging teilweise erst mit einigen Sekunden Verzögerung erschien. In Visual Studio 2017 geht es wesentlich schneller.

Grüne Häkchen markieren erfolgreich getestete Programmcodezeilen. Für Zeilen mit einem blauen Minuszeichen fehlen Tests (Abb. 7).
Grüne Häkchen markieren erfolgreich getestete Programmcodezeilen. Für Zeilen mit einem blauen Minuszeichen fehlen Tests (Abb. 7).

Beim Anfügen des Debuggers an laufende Prozesse gibt es nun ein Suchfeld. Mit der Tastenkombination Shift + Alt + P können Entwickler den Debugger an den zuletzt verwendeten Prozess erneut anheften, wenn es noch einen gleichnamigen Prozess gibt. In Webprojekten ist das durchgängige Debugging vom Webserver zum JavaScript im Browser nun in Verbindung mit Googles Chrome auch ohne den Umweg über Attach Process möglich. Vorher konnten Entwickler das nur mit dem Internet Explorer.

Eine weitere Verbesserung im Debugger ist die Option, die Verhaltenseinstellung bei Laufzeitfehlern an Bedingungen zu binden. Derzeit ist jedoch nur eine Bindung an den Modulnamen möglich. Die Verwendung eines Auswahlfelds an der Stelle deutet aber darauf hin, dass Microsoft hier zukünftig auch andere Bedingungsarten anbieten will.

Mit "Live Unit Testing" sehen Entwickler im Editor schon während der Programmcodeeingabe durch Symbole für jede Programmzeile (s. Abb. 7), ob diese durch einen Unit-Test abgedeckt ist und ob der Test erfolgreich war. Die von ihnen definierten Unit-Tests werden laufend im Hintergrund ausgeführt. Als Testframework können nicht nur MSTest, sondern auch NUnit und XUnit zum Einsatz kommen. Live Unit Testing ist aber aktuell nur verfügbar für Projektmappen, in denen es lediglich C#- und/oder Visual-Basic-.NET-Projekte gibt. .NET Core wird noch nicht unterstützt.

XAML im laufenden Betrieb ändern

.NET-Code können Nutzer schon länger während des Debuggings ändern, ohne den Programmfluss zu beenden und die Anwendung neu zu starten. Diese Edit & Continue-Funktion dehnt Microsoft nun auf die Oberflächenbeschreibungssprache XAML (Extensible Application Markup Language) aus, sodass Entwickler direkt die Auswirkung von Änderungen in der Benutzeroberfläche beobachten können. Zudem bietet Microsoft erstmals Refactoring-Funktionen für XAML-Code an. Dazu gehören das automatische Einfügen von Namensräumen, die Umbenennung der Namensraum-Präfixe, das alphabetische Sortieren der Namensräume und die Entfernung nicht verwendeter Namensräume aus der XML-Deklaration. Diese Features gibt es für XAML in WPF und Universal Windows 10 Apps (UWA), nicht aber für das ausgemusterte Silverlight und das neue Xamarin Forms.

Für Xamarin Forms, eine XAML-Variante für iOS-, Android- und Windows-10-Apps, die Entwickler bisher immer komplett manuell im Tag-Editor erfassen mussten, gibt es nun eine grafische Vorschau des Ergebnisses in der Entwicklungsumgebung. Die grafische Gestaltung, die Entwickler von WPF, Silverlight oder UWA gewohnt sind, ist für eine Xamarin-Forms-Oberfläche weiterhin nicht möglich. Eine aus anderen XAML-Varianten bekannte Funktion der Analyse und Veränderung des XAML-Steuerelementbaums zur Laufzeit ist nun für Xamarin-Apps unter dem Namen Xamarin Inspector [5] in Visual Studio 2017 enthalten.

.NET Core in Visual Studio 2017

Wie der Vorgänger unterstützt Visual Studio 2017 die .NET-Versionen 2.0 bis 4.6.2. Der Support für .NET Core 1.x ist als Workload installierbar. Dabei kommt die dritte Preview des .NET Core SDK zum Einsatz, die nicht mehr auf .xproj- und project.json-Dateien basiert, sondern eine neue Version der XML-basierten MSBuild-Dateien (.csproj) verwendet, die auch alle Referenzen zu NuGet-Paketen enthalten. Mit dem neuen Format sind zudem Referenzen zwischen .NET-Core-Projekten und anderen .NET-Projektarten (z. B. Xamarin-Projekte) möglich.

Bestehende .xproj- und project.json-Dateien konvertiert Visual Studio 2017 [6] beim Öffnen des Projekts in .csproj-Dateien, wobei das noch nicht zuverlässig funktioniert. Entwickler müssen zudem bedenken, dass es keine Option zur Rückkonvertierung gibt, falls sie später doch mit dem JSON-Format oder Visual Studio 2015 weiterarbeiten möchten. Microsoft spricht dabei von der Alpha-Version der "MSBuild-based .NET Core Tools", die Teil des .NET Core SDK 1.0 Preview 3 sind und auf .NET Core 1.1 RTM basieren. Für das neue plattformübergreifende .NET gibt es vorerst einige funktionale Einschränkungen, zum Beispiel kein Live Unit Testing. Mit der endgültigen Version von Visual Studio 2017 sollen die .NET-Core-Werkzeuge erstmals den RTM-Status erreichen [7].

Auch im neuen Visual Studio for Mac, einer erweiterten Version von Xamarin Studio, können Entwickler mit .NET Core 1.1 und der Preview 3 des SDK arbeiten. Visual Studio for Mac [8] ist am 16. November 2016 als Preview erschienen.

Ein neuer Versuch für JavaScript-IntelliSense

Für JavaScript-Entwickler versucht Microsoft alle Jahre wieder, die IntelliSense-Eingabeunterstützung zu verbessern, was aufgrund der schwachen Typisierung schwierig ist. Der neueste Ansatz verwendet im Hintergrund TypeScript-Typdefinitionsdateien, selbst wenn Entwickler gar nicht TypeScript benutzen
wollen. Die Definitionen dienen dann nur zur Entwicklungszeit in Visual Studio dazu, die Eingabeunterstützung anzubieten. Basis dafür ist ein neuer JavaScript Language Service mit dem Projektnamen Salsa [9]. Neben Salsa und der Tatsache, dass Microsoft TypeScript 2.1 mit Visual Studio 2017 ausliefert, hat sich für Webentwickler in der neuen Version nichts Wesentliches getan.

Fazit

Weitere Neuerungen in Visual Studio 2017 in Kürze

Fazit

Die modulare Installation und Verbesserungen im Projektmappen-Explorer bringen Entwicklern spürbare Zeitersparnisse. Auch die neuen Funktionen im Editor und Debugger sowie das Live Unit Testing fördern die Produktivität.

Erschreckend lang ist die Problemliste in den Release Notes [14] zum aktuellen Release Candidate, die mit der Produktbegutachtung des Autors korreliert. Hier bleibt zu hoffen, dass Microsoft sich lieber noch ein paar Monate Zeit für den letzten Feinschliff lässt, statt das Produkt möglichst schnell, aber mit Fehlern auf den Markt zu bringen. (ane [15])

Dr. Holger Schwichtenberg
leitet das Expertennetzwerk www.IT-Visions.de [16], das Beratung, Schulungen und Softwareentwicklung im Umfeld von .NET und Web-Techniken anbietet. Er hält Vorträge auf Fachkonferenzen und ist Autor zahlreicher Fachbücher.


URL dieses Artikels:
http://www.heise.de/-3528218

Links in diesem Artikel:
[1] https://www.heise.de/meldung/Microsoft-connect-Release-Candidate-von-Visual-Studio-2017-steht-bereit-3488821.html
[2] https://www.heise.de/meldung/Microsoft-Build-2016-Vorschau-von-Visual-Studio-2016-veroeffentlicht-3158425.html
[3] https://marketplace.visualstudio.com
[4] https://marketplace.visualstudio.com/items?itemName=VisualStudioProductTeam.ProductivityPowerTools
[5] https://developer.xamarin.com/guides/cross-platform/inspector/
[6] https://blogs.msdn.microsoft.com/dotnet/2016/11/16/announcing-net-core-tools-msbuild-alpha/
[7] https://blogs.msdn.microsoft.com/dotnet/2016/10/19/net-core-tooling-in-visual-studio-15/
[8] https://www.visualstudio.com/vs/visual-studio-mac/
[9] https://github.com/Microsoft/TypeScript/wiki/Salsa
[10] https://github.com/isocpp/CppCoreGuidelines
[11] https://docs.microsoft.com/de-de/visualstudio/
[12] https://visualstudio.uservoice.com/forums/121579-visual-studio-ide
[13] https://www.research.net/
[14] https://www.visualstudio.com/en-us/news/releasenotes/vs2017-relnotes
[15] mailto:ane@heise.de
[16] http://www.it-visions.de/start.aspx