Visual Studio 2017 (VS2017)

Eintrag zuletzt aktualisiert am: 26.06.2019

Visual Studio 2017 ist der Nachfolger von Visual Studio 2015.
Codename: Visual Studio 15
Interne Versionsnummer: 15

Termine

Erste öffentliche Vorabversion: 30.3.2016 (BUILD 2016)
RTM-Version: 7.3.2017
Es gab regelmässige Updates: 15.1, 15.2 usw. Bis 15.9.

Unterstützte Programmier- und Skriptsprachen in Visual Studio 2017


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-Schnippeln:

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.

Setup stark Modular

  • Es gibt einen neuen, stärker modularisierten Webinstaller
  • Die einzelnen Module heißen "Workloads" (in der deutschen Version: "Arbeitsauslastungen" :-( )
  • Nicht alle Visual Studio-Funktionen sind in Workloads organisiert. Unterstützung für Github und PowerShell, C++/CLI, diverse Testwerkzeuge sowie ältere Frameworks wie LINQ-to-SQL und Windows 8.1 findet der Entwickler unter den "Individual Components".
  • Es gibt kein ISO-Setup mehr, was viele Benutzer nicht gut finden.
  • Für Visual Studio-Erweiterungen gibt es ein neues Format (VSIX-Version 3), da eine Erweiterung nun die benötigten Workloads deklarieren muss. Visual Studio-Nutzer können jetzt mehrere Erweiterungen in einem Rutsch installieren und sich die Liste der installierten Erweiterungen auch per Microsoft-Cloud auf andere Rechner übertragen lassen. Eine automatische Installation der Erweiterungen erfolgt dort aber nicht. Zudem überwacht Visual Studio nun das Laufzeitverhalten von Erweiterungen und warnt, wenn eine Erweiterung die IDE ausbremst. Einige ältere Erweiterungen (z. B. Projektvorlagen, die kein Template Manifest besitzen) müssen für die Verwendung in Visual Studio 2017 geändert werden.

"Low Impact Installation"

  • statt Registry nun Konfigurationsdateien in /AppData/Local/Microsoft/VisualStudio
  • statt GAC nun C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise

Erweiterung/Add-ons

  • Für Visual Studio-Erweiterungen gibt es ein neues Format (VSIX-Version 3), da eine Erweiterung nun die benötigten Workloads deklarieren muss.
  • Visual Studio-Nutzer können nun mehrere Erweiterungen in einem Rutsch installieren und sich die Liste der installierten Erweiterungen auch per Microsoft-Cloud auf andere Rechner übertragen lassen. Eine automatische Installation der Erweiterungen erfolgt dort aber nicht.
  • Zudem überwacht Visual Studio nun das Laufzeitverhalten von Erweiterungen und warnt, wenn eine Erweiterung die IDE ausbremst.
  • Einige ältere Erweiterungen (z. B. Projektvorlagen, die kein Template Manifest besitzen) müssen für die Verwendung in Visual Studio 2017 geändert werden.

Projekte

  • Bei den Projektvorlagen spricht Microsoft jetzt nur noch von "App". So wurde aus der "WPF Application" nun auch eine "WPF App", was die Unterscheidung zwischen den klassischen Windows-Anwendungen und den modernen Apps erschwert. Immerhin trennen die beiden Äste "Windows Classic Desktop" und "Windows Universal" im Projekt-Anlegen-Dialog die beiden Architekturen noch.
  • Das Laden von Projektmappen mit sehr vielen Projekten dauerte bisher in Visual Studio noch länger als mancher Gang zur Kaffeemaschine. Als "Lightweight Solution Load" bezeichnet Microsoft das Laden von Projektmappen in Visual Studio 2017 ohne dass dabei alle Projekte tatsächlich geöffnet würden. Dies erfolgt erst, wenn der Entwickler ein Projekt konkret aufklappt.
  • Als "Projectless source code editing" und "Any Code" bezeichnet Microsoft die Möglichkeit, Dateisystemordner mit Quellcode direkt per "File/Open/Folder" zu öffnen, ohne das es dafür eine Projektdatei gibt. Für solche Dateien steht nicht nur der Codeeditor, sondern auch das Debugging zur Verfügung. Im Projektmappenexplorer können Entwickler nun umschalten zwischen der bisher bekannten Projektansicht und einer rohen Sicht auf das Dateisystem ("Folder View").

Geschwindigkeit

Schneller durch mehr Hintergrundverarbeitung

Editor

  • Der Editor unterstützt die Sprachsyntax in C# in der Version 7.0, F# 4.1 und Visual Basic .NET in der Version 15 sowie TypeScript 2.1.
  • Bei der IntelliSense-Eingabeunterstützung kann der Entwickler die Vorschlagsliste filtern nach Sprachkonstrukttyp, also nach Namensräumen, Klassen, Schnittstellen, Enumerationen, Delegaten, Methoden, Variablennamen sowie auch nach Sprachschlüsselwörtern und Codeschnipselnamen. Lange Vorschlagslisten werden so übersichtlicher.
  • Im Editor-Fenster zeigen nun sogenannte "Structure Guide Lines" die Einrückungstiefe besser. Diese Funktion hat Microsoft aus den Visual Studio Power Tools in das Produkt übernommen, allerdings in einer farblosen Variante.
  • Die Trefferliste bei der altbekannten Funktion "Find all References" ist nun gruppierbar in verschiedene Kriterien wie Projektname, Dateiname und Typname.
  • Die Funktion "Goto Line" (STRG+G) ist nun kein modaler Dialog mehr, sondern schmiegt sich wie die Volltextsuche in die obere rechte Ecke des Editors ein. Über das neue Eingabefeld kann der Entwickler auch Dateien, Typen und Mitglieder per Namenssuche finden.
  • In Visual Studio 2015 hatte Microsoft die Codeanalyse und das Refactoring auf neue Grundlagen gestellt, selbst aber nur wenig konkrete Funktionen mitgeliefert. In Visual Studio 2017 gibt es deutlich feiner konfigurierbare "Code Style"-Regeln zum Einsatz von Sprachkonstrukten und zur Bezeichnernamensgebung sowie zahlreiche zusätzliche Refactoring-Funktion, wie das Extrahieren von Klassen aus Dateien, das Vervollständigen von switch-Anweisungen und die Nutzung der neueren syntaktischen Konstrukte wie "String Interpolation" und "Inline Variable Declaration".
  • Auch für die eXtensible Application Markup Language (XAML) in Windows Presentation Foundation (WPF) und Universal Windows 10 Apps (UWA) bietet Microsoft nun Refactoring-Funktionen wie das automatische Einfügen von Namensräumen, das Umbenennen der Namensraum-Präfixe, das alphabetische Sortieren der Namensräume und die Entfernung nicht verwendeter Namensräume.
  • Die IntelliSense für den JavaScript-Editor hat Microsoft abermals überarbeitet; er arbeitet nun intern mit dem TypeScript Language Service und bietet Eingabeunterstützung an mehr Stellen, z. B. bei dem Befehl import { … } from … für Module. Auch eine Transpilation von modernen JavaScript-Versionen (ECMAScript 6 und höher) zu ECMAScript 5 ist damit nun in Visual Studio ohne Zusatzwerkzeuge möglich. Gleichzeitig entfällt aber die Unterstützung für ältere Intellisense-Krücken wie ///<references/>, _references.js, .intellisense.js und das VSDoc-Format. Der neue Editor unterstützt nur noch JSDoc.

Debugger

  • Beim Debugging in Visual Studio bot die Entwicklungsumgebung bei aufgetretenen Laufzeitfehlern für native Code und Managed Code bisher zwei verschiedene 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 eine neue "Exception Helper"-Sprechblase eingeführt, die innere Fehler direkt anzeigt. Bei dem häufigen NullReference-Fehler zeigt der Exception Helper jetzt das verursachende Objekt an – dies allerdings leider nicht, wenn es ein innerer Fehler ist.
  • 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 dies nun wesentlich schneller.
  • Run to Click
  • Eine weitere Verbesserung im Debugger ist die Option, das Verhaltenseinstellung bei Laufzeitfehler nun auch an Bedingungen zu binden. Aktuell ist die einzige mögliche Bedingung aber eine Bindung an den Modulnamen.

C# Interactive Window

  • Filter bei Intellisense-Liste

Edit&Continue für XAML

.NET-Programmcode können Nutzer schon seit Langem während des Debuggings ändern, ohne den Programmfluss zu beenden und die Anwendung neu zu starten. Diese "Edit and Continue"-Funktion dehnt Microsoft nun auch auf XAML aus, sodass Entwickler ohne Neubeginn des Debuggings die Auswirkung von XAML-Änderungen in der laufenden Benutzeroberfläche beobachten können. Dabei kann der Entwickler nicht nur Eigenschaften von XAML-Elementen (einschließlich deren Datenbindung) ändern, sondern auch Elemente hinzufügen oder löschen.

Live Unit Testing

Mit "Live Unit Testing" sieht der Entwickler im Editor schon während der Programmcodeeingabe durch Symbole für jede Programmzeile, ob diese durch einen Unit Test abgedeckt ist und ob der Test erfolgreich war. Die von ihm definierten Unit Tests werden laufend im Hintergrund ausgeführt. Als Testframework kann nicht nur MSTest, sondern auch Xunit oder Nunit 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

  • Zusammen mit Visual Studio 2017 haben die Werkzeuge für .NET Core, ASP.NET und Entity Framework Core erstmals RTM-Status erreicht. Im Juni 2016 waren zwar die Versionen 1.0 der Core-Frameworks erschienen, aber die zugehörigen Werkzeuge verblieben im Preview-Status. Die fertigen Core-Werkzeuge gibt es nun für die Kommandozeile und in Visual Studio 2017.
  • Zu beachten ist, dass aber einige Visual Studio-Funktionen wie Live Unit Testing weiterhin nicht für .NET Core verfügbar sind.
  • Microsoft hat wie angekündigt das .NET Core-Projektformat von project.json und .xproj-Dateien wieder auf XML-basierte .csproj-Dateien umgestellt - dort sind nun auch die Referenzen zu Nuget-Paketen hinterlegt. Visual Studio 2017 konvertiert diese beim Öffnen von bestehenden .NET Core-Projekten in das neue .csproj-Format. Alternativ ist die Konvertierung per Kommandozeile möglich mit dotnet-migrate.
  • Die endgültigen Werkzeuge für .NET Core gibt es übrigens nicht für Visual Studio 2015. Entwickler, die mit .NET Core arbeiten wollen, müssen also auf Visual Studio 2017 umsteigen.

Mit Visual Studio 2017 RTM installiert sich die Version 1.0.0 des .NET Core SDK vom 25.02.2017 unter C:\Program Files\dotnet\sdk\1.0.0 sowie die Version 1.1.1 von .NET Core unter C:\Program Files\dotnet\shared\Microsoft.NETCore.App\1.1.1.

Xamarin

Für Xamarin Forms, die XAML-Variante für iOS, Android und Windows 10 Apps, die der Entwickler bisher immer komplett manuell im Tag-Editor erfassen musste, gibt es nun eine grafische Vorschau des Ergebnisses in der Entwicklungsumgebung. Die Vorschau wird plattformspezifisch von den Emulatoren erzeugt; daher ist für eine Vorschau aus iOS-Sicht, genau wie für Übersetzung und Debugging, ein MacOS-Rechner zumindest als Remote Host notwendig. Die grafische Gestaltung, die Entwickler von WPF, Silverlight oder Windows Universal Apps gewohnt sind, ist für eine Xamarin-Forms-Oberfläche aber weiterhin nicht möglich.

Außerdem hat Microsoft die bisher sehr unübersichtlichen Projektvorlagen für Xamarin-Cross-Platform-Apps zu einer Vorlage mit einem nachgeschalteten Assistenten zusammengefasst. Darin kann der Entwickler zwischen Xamarin Forms und nativen Oberflächen sowie Code Sharing via Shared Project oder Portable Class Library wählen. Er kann angeben, dass ein Backend für die App in Azure automatisch erzeugt wird. Visual Studio 2017 enthält zudem nun auch Vorlagen für tvOS- und watchOS-Apps.

Cordova Tools

Für Cordova-Entwickler bietet Visual Studio 2017 nun einen neuen Browser-basierten Emulator sowie Unterstützung für iOS 10 und Xcode 8.

TFS Team Explorer

Bei der Integration von Visual Studio mit dem Team Foundation Server (TFS) setzt Microsoft immer mehr auf den Browser. In Verbindung mit dem TFS-Cloud-Dienst "Visual Studio Team Services" kann man Work Items nicht mehr in Visual Studio bearbeiten; es öffnet sich stattdessen die entsprechende Webseite im Browser.

Weitere Features

Zudem unterstützt Visual Studio 2016 die 2016er-Versionen des Microsoft SQL Servers und von Microsoft SharePoint.