Visual Studio IconVisual Studio 2017, Version 15.8: Versionshinweise


Entwicklercommunity | Systemvoraussetzungen | Kompatibilität | Verteilbarer Code | Lizenzbedingungen | Blogs | Bekannte Probleme



Hinweis

Dies ist nicht die neueste Version von Visual Studio. Das neueste Release können Sie über die Visual Studio-Site herunterladen.


Supportzeitrahmen

Für diese Version wird jetzt kein Support mehr geleistet. Weitere Informationen zur Visual Studio-Unterstützung finden Sie in der Supportrichtlinie für Visual Studio 2017.

Lesen Sie die neueste Version der Versionshinweise, oder besuchen Sie die Visual Studio-Website, um die neueste Version von Visual Studio 2017 herunterzuladen.

Visual Studio-Blog

Der Visual Studio Blog ist die offizielle Quelle für Einblicke in das Produkt, verfasst vom Visual Studio Engineering-Team. In den folgenden Beiträgen finden Sie ausführliche Informationen zu den Releases von Visual Studio Version 2017, Version 15.8:

Visual Studio 2017, Version 15.8: Releases

Zusammenfassung der wichtigsten neuen Features in Version 15.8

Wichtigste behobene Probleme in Version 15.8

In Version 15.8 wurden folgende von Kunden gemeldete Probleme behoben:

Sehen Sie sich alle von Kunden gemeldeten Probleme an, die in Version 15.8 von Visual Studio 2017 behoben wurden.

The Developer Community Portal


Details zu den Neuigkeiten zu 15.8

Release Notes IconVisual Studio 2017 Version 15.8.0

Veröffentlichung: 14. August 2018

Neue Features in Version 15.8

Installieren

Sie haben nun die Möglichkeit, alle Installationsdateien vor dem Start Ihrer Installation herunterzuladen.

  • Wählen Sie dazu die Option „Alle herunterladen und dann installieren“ im Installationsprogramm aus (Abbildung 1). Diese Option wird empfohlen, wenn Sie eine langsamere Internetverbindung haben.
  • Die Standardoption bleibt „Beim Herunterladen installieren“, wodurch parallel heruntergeladen und installiert wird.
Download Otion
(Abbildung 1) Downloadoption

Leistung

Dieses Release enthält die folgenden Leistungsverbesserungen:

  • Der Branchwechsel für C#-, VB- und C++-Projekte ist für größere Projektmappen schneller, da das erneute Laden der Projektmappe nicht länger erforderlich ist.
  • Die Zeit, die zum Entladen und Neuladen von mehreren C#- und VB-Projekten in großen Projektmappen benötigt wird, wurde von Minuten auf nur einige Sekunden minimiert.
  • Wir haben eine Option hinzugefügt, mit der das erneute Öffnen von Dokumenten deaktiviert wurde, die in der vorherigen Sitzung geöffnet waren, da das erneute Öffnen von bestimmten Dateitypen oder Designern das Laden der Projektmappe verzögern kann.
    • Aktivieren oder deaktivieren Sie diese Option unter Extras > Optionen > Projekte > Projektmappen > Allgemein.

Testleistung

Wir haben die Leistung beim Ausführen von wenigen Tests in einer großen Projektmappe mit mehreren Testprojekten erheblich verbessert. In unseren Testumgebungen konnte eine Projektmappe mit über 10.000 MSTests einen einzelnen Test um bis zu 82 % schneller laden.

Leistungssteigerung für Visual Basic

Visual Basic bietet nun eine beträchtliche Leistungssteigerung bei der Verwendung des Muster CInt(Fix(number)), um eine Konvertierung von nicht-ganzzahligen Typen in Integer durchzuführen.

Leistungsprofilerstellung

Dieses Release enthält die folgenden Leistungsverbesserungen bei der Profilerstellung:

  • Die Funktion zum Starten der angehaltenen Profilerstellung wurde hinzugefügt:

    • Das CPU-Auslastungstool im Leistungsprofiler (ALT+F2) kann nun auch gestartet werden, wenn dieser zuvor angehalten wurde (Abbildung 2). Dies kann beim Warten auf ein Szenario nützlich sein, für das sich eine Untersuchung der CPU-Auslastung anbietet. Wenn die CPU-Auslastungserfassung beim Start deaktiviert wird, sammelt der Leistungsprofiler erst dann Beispielstapeldaten für die CPU-Auslastung, wenn die Erfassung aktiviert wird. Dies führt dazu, dass weniger Daten gesammelt und analysiert werden, wodurch die Effizienz von Leistungsuntersuchungen gesteigert wird.

    • Klicken Sie auf der Startseite des Leistungsprofilers auf das Zahnradsymbol neben CPU-Auslastung, um eine Sitzung zu starten, in der die Erfassung von Beispieldaten für die CPU-Auslastung deaktiviert ist. Deaktivieren Sie auf der Eigenschaftenseite für die CPU-Auslastung das Kontrollkästchen neben CPU-Profilerstellung aktivieren (Sampling), und klicken Sie anschließend auf OK, um die Einstellungen zu speichern.

      CPU Usage Tool settings page
      (Abbildung 2) Einstellungen für das CPU-Auslastungstool
    • Klicken Sie auf der Startseite des Leistungsprofilers auf Start, um die Zielanwendung zu starten. Nun wird das CPU-Auslastungsdiagramm angezeigt (Abbildung 3), mit dem Sie die CPU-Profilerstellung steuern können. Klicken Sie in der Mitte der Ansicht auf CPU-Profilerstellung aktivieren, oder klicken Sie alternativ auf CPU-Profilerstellung aufzeichnen direkt unter dem CPU-Auslastungsdiagramm, um die Sammlung der Beispielstapeldaten für die CPU-Auslastung zu aktivieren. Sie können auf CPU-Profilerstellung aufzeichnen klicken, um die Beispieldatensammlung beliebig oft zu aktivieren oder zu deaktivieren. Die Farbe des Diagramms zur CPU-Auslastung ändert sich, um anzugeben, ob die Beispielsammlung zu diesem Zeitpunkt aktiviert/deaktiviert ist.

      CPU Usage Tool monitoring view
      (Abbildung 3) CPU-Auslastungsdiagramm
  • Wir haben ein Tool zur Nachverfolgung der .NET-Objektzuordnung hinzugefügt:

    • Das Tool für die Nachverfolgung der .NET-Objektzuordnung verknüpft die im Leistungsprofiler verfügbare Toolfamilie. Durch Aufrufen dieses Tools für eine Leistungsprofilersitzung wird die Sammlung von Stapelüberwachungsdaten für jede .NET-Objektzuordnung ausgelöst, die in der Zielanwendung vorkommt. Diese Stapeldaten werden zusammen mit dem Objekttyp und den Größeninformationen analysiert, um Details der Speicheraktivität Ihrer Anwendung anzuzeigen. Sie können schnell die Zuteilungsmuster in Ihrem Code ermitteln und Anomalien identifizieren. Zusätzlich kann für GC-Ereignisse (Garbage Collection) bestimmt werden, welche Objekte gesammelt und beibehalten wurden. Außerdem lassen sich Objekttypen bestimmen, die in der Anwendung für eine besonders hohe Speicherauslastung verantwortlich sind.
    • Dies ist besonders für API-Autoren nützlich, um ihnen bei der Reduzierung von Zuteilungen zu helfen. Viele Anwendungen überschreiten die Puffergrenzwerte, die in der Diagnosedatensammlung berücksichtigt werden. Kleine Testanwendungen, in denen API-Schlüsselszenarios ausgeführt werden, können jedoch relativ gut diagnostiziert werden. Während Ihre Testanwendung ausgeführt wird, zeigt der Leistungsprofiler ein Liniendiagramm mit den Liveobjekten (Anzahl) sowie ein Balkendiagramm mit dem Objektdeltawert (Änderung in %) an.
    • Gehen Sie wie folgt vor, um das Tool zur Nachverfolgung der .NET-Objektzuordnung zu verwenden: Rufen Sie die Startseite des Leistungsprofilers auf (Abbildung 4), und wählen Sie ein Ziel für die Profilerstellung aus (das Standardziel ist das Startprojekt in der Projektmappe). Aktivieren Sie anschließend unter „Verfügbare Tools“ das Kontrollkästchen neben Nachverfolgung der .NET-Objektzuordnung, und klicken Sie auf Start.
    Performance Profiler launch page
    (Abbildung 4) Startseite des Leistungsprofilers

Leistungsprofilerstellung (CPU-Auslastung)

Dieses Release enthält die folgenden Verbesserungen für das CPU-Auslastungstool des Leistungsprofilers(verfügbar über ALT+F2):

  • Die Aufrufstrukturansicht zeigt nun in der Standardeinstellung die asynchrone Ausführung nach logischer Aufrufliste an. Sie können diese Verhalten nun deaktivieren, indem Sie die Option Asynchronen Code zusammenfügen in der Filterdropdownliste der Hauptansicht für die CPU-Auslastung auswählen.
  • Die Ansicht „Modules/Functions“ (Module/Funktionen) ist nun verfügbar. In dieser werden Informationen zur Leistung nach Modul (DLL-Datei) und nach Funktion innerhalb eines Moduls angezeigt. Sie können die Ansicht „Module/Funktionen“ über das verfügbare Kontextmenü anzeigen, wenn Sie eine Funktion in der Hauptansicht der CPU-Auslastung oder über das Ansichtsdropdownfeld in der Aufrufstruktur oder der Ansicht „Aufrufer/Aufgerufener“ auswählen.
  • Dem CPU-Auslastungsdiagramm wurde in der Hauptansicht des CPU-Auslastungstools die Instanzanzeige hinzugefügt. Sie können die Instanzen anzeigen, wenn eine Funktion ausgeführt wird (z.B. auf dem Stapel), indem Sie einen Doppelklick auf eine der Funktionen ausführen, die in den CPU-Auslastungsansichten aufgeführt sind.

Produktivität

Dieses Release enthält die folgenden Erweiterungen zur Produktivität:

  • Sie können zusätzliche Codebereinigungsvorgänge mit Dokument formatieren (STRG+K,D oder STRG+E,D) für die C#-Entwicklung durchführen. Konfigurieren Sie die Bereinigung, indem Sie zu Extras>Optionen>Text-Editor>C#>Codeformat>Formatierung>Allgemein navigieren.
  • Es wurden weitere Refactorings und Schnellaktionen mithilfe von STRG + . oder ALT + EINGABETASTE hinzugefügt:
    • Mit der Invert If-Anweisung können Sie Ihre Logik in if-else-Anweisungen umkehren. Platzieren Sie Ihren Cursor im if-Schlüsselwort, um dieses Refactoring auszulösen.
    • Mit Add parameter from method callsite (Parameter aus der Methodenaufrufsite hinzufügen) können Sie einer Methode einen Parameter hinzufügen, indem Sie ein Argument zu einer Methodenaufrufsite hinzufügen und Schnellaktionen und Refactorings auslösen.
    • Unnötige Klammern entfernen entfernt Klammern um binäre Operatoren, die für die Kompilierung nicht wichtig sind. Sie können dieses Format über Extras>Optionen>Text-Editor>C#>Codeformat>Allgemein oder über die EDITORCONFIG-Datei konfigurieren:
      • dotnet_style_parentheses_in_arithmetic_binary_operators
      • dotnet_style_parentheses_in_relational_binary_operators
      • dotnet_style_parentheses_in_other_binary_operators
      • dotnet_style_parentheses_in_other_operators
    • Use ternary conditionals in assignments and return statements (Ternäre Bedingungen in Zuweisungen und return-Anweisungen verwenden) kann ebenso als Formatregel unter Extras>Optionen>... oder über die EDITORCONFIG-Datei konfiguriert werden:
      • dotnet_style_prefer_conditional_expression_over_assignment
      • dotnet_style_prefer_conditional_expression_over_return
  • Es wurden neue Befehle und Verbesserungen zum Fenster Gehe zu allen hinzugefügt:
    • „Go to Enclosing Block“ (Zu einem einschließenden Block wechseln) (STRG+ALT+PFEIL-NACH-OBEN), ermöglicht Ihnen, schnell nach oben zum Anfang des einschließenden Codeblocks zu navigieren.
    • „Zum nächsten/vorherigen Problem wechseln“ (ALT+BILD-AUF/BILD-AB) ermöglicht Ihnen, das nächste/vorherige Problem zu überspringen (Fehler, Wellenlinie, Glühbirne).
    • „Gehe zu Member“ (STRG+T,M) ist nun standardmäßig auf diese Datei ausgelegt. Sie können die Standardeinstellung „Zurück zur Projektmappe“ ändern, indem Sie den Bereich auf das aktuelle Dokument festlegen (STRG+ALT+C).
  • Sie können nun Einfügemarken und Auswahlmöglichkeiten an mehreren beliebigen Speicherorten in einer Datei mit mehrfacher Caretunterstützung erstellen. So können Sie gleichzeitig an mehreren Positionen Text hinzufügen, bearbeiten oder löschen.
    • Fügen Sie Caretzeichen mit STRG+ALT+Linker Mausklick ein.
    • Fügen Sie eine Auswahl und ein Caretzeichen an der nächsten Position ein, die mit der aktuellen Auswahl übereinstimmt (UMSCHALT+ALT+EINFG).
    • Eine vollständige Liste der Aktionen finden Sie unter Bearbeiten > Mehrere Einfügemarken.
  • Greifen Sie auf das kontextbezogene Navigationsmenü über ATL+` zu.
  • Achten Sie darauf, dass Ihre Tastenzuordnungen mit den zwei neuen Tastaturprofilen konsistent bleibt: Visual Studio Code und ReSharper (Visual Studio). Diese Schemas finden Sie unter Extras > Optionen > Umgebung > Tastatur und über das Dropdownmenü.

Debuggen

Dieses Release enthält die folgenden Erweiterungen zum Debuggen:

  • Wenn Sie mehr als eine Visual Studio 2017-Instanz installiert haben, können Sie jetzt auswählen, für welche Instanz Sie Ihre Erweiterung beim Debuggen bereitstellen möchten (Abbildung 5). Auf diese Weise können Sie z.B. im Releasekanal für Visual Studio entwickeln, während Sie im Vorschaukanal debuggen.

    Select your debug instance
    (Abbildung 5) Debuginstanz auswählen
  • Sie können jetzt den Momentaufnahmedebugger direkt über die Seite „Zusammenfassung der Veröffentlichung“ anfügen (Abbildung 6).

    Attach Snapshot Debugger from Publish Summary page
    (Abbildung 6) Momentaufnahmedebugger über die Seite „Zusammenfassung der Veröffentlichung“ anfügen
  • Sie können nun verwaltete Aufgaben über das Aufgabenfenster anzeigen, während Sie Minidumps mit Heapinformationen debuggen.

Tools für Entwickler der universellen Windows-Plattform

Es wurden viele wichtige Verbesserungen am XAML-Designer für Projekte vorgenommen, die auf die Universelle Windows-Plattform ausgerichtet sind, die eine Zielplattformversion des Windows 10 Fall Creators Update (Build 16299) oder höher aufweisen. Diese Verbesserungen umfassen Folgendes:

  • Sie können nun Sammlungen in der Eigenschaftenanalyse bearbeiten.
  • Im Designer können Sie jetzt (Format-)Vorlagen bearbeiten, auch wenn die Definitionen zu diesen Einträgen in anderen Dokumenten festgelegt sind.
  • Eigenschaften vom Typ IconElement (z.B. Icon in einem AppBarButton-Element) verfügen jetzt über einen benutzerdefinierten Editor in der Eigenschaftenanalyse. Dadurch können diese Eigenschaften einfacher festgelegt werden.
  • Der Designer, Editor und das Feature „Bearbeiten und Fortfahren“ sollten jetzt einwandfrei mit x:DefaultBindMode funktionieren.
  • Die Funktionen des Visual State-Managers in Blend unterstützen jetzt AdaptiveTrigger.

F# 4.5- und F#-Tools für Visual Studio

Mit diesem Release wird die F#-Sprachversion 4.5 eingeführt. Dies gilt auch für die neue 4.5.x-Familie von FSharp.Core (die F#-Kernbibliothek). Weitere Informationen zu den einzelnen Änderungen finden Sie im F# RFC-Repository. Dieses Release enthält außerdem viele Verbesserungen der F#-Tools für Visual Studio.

F# 4.5

Im Folgenden werden einige Besonderheiten der F#-Sprachversion 4.5 aufgeführt:

Span<'T> Unterstützung

Span<'T> und verwandte Features wurden implementiert, sodass APIs, die Konstrukte wie Span, Memory und ref verwenden, mit F# effektiv verwendet und produziert werden können. Dafür werden die folgenden Features unterstützt:

  • neuer voidptr-Typ
  • neue NativePtr.ofVoidPtr- und NativePtr.toVoidPtr-Funktionen in FSharp.Core
  • neue inref<'T>- und outref<'T>-Typen, bei denen es sich jeweils um schreib- bzw. lesegeschützte Byrefs handelt gilt für in ref und out ref in C#
  • Funktion zum Erstellen von ByRefLike-Strukturen (z.B. Span und ReadOnlySpan)
  • Funktion zum Erstellen von IsReadOnly-Strukturen
  • implizites Dereferenzieren von byref- und inref-Rückgaben von Methoden
  • Funktion zum Erstellen von Erweiterungsmembers für byref/inref/outref

Mithilfe dieser Features wird ein Fehler im ersten Entwurf für byref-Rückgabewerte in F# 4.1 behoben, wobei Funktionen, Methoden und Eigenschaften, die byref-Parameter zurückgeben, den Rückgabewert nicht implizit dereferenziert haben. Diese Änderung soll dazu beitragen, dass das Feature mit der Verarbeitung von ref-Rückgabewerten in C# konform ist. Wenn mit einer Typanmerkung angegeben wird, dass jetzt eine implizite Dereferenzierung eines ref-Rückgabewerts verwendet wird, wird eine Fehlermeldung ausgegeben.

Außerdem wird mithilfe dieser Features ein Fehler im F#-Compiler behoben, durch den das sogenannte „Evil struct replacement“-Verhalten auftreten konnte. Dabei wurde beim Aufruf einer Methode für eine F#-Struktur die eigentlich aufzurufende Struktur durch eine andere ersetzt. Der this-Parameter einer Struktur wird jetzt als inref<MyStruct> bezeichnet. Dabei wird eine Fehlermeldung ausgelöst, in der vorgeschlagen wird, dass der Benutzer ein veränderliches Feld hinzufügen soll, wenn er die Struktur verändern möchte.

Weitere Informationen über Konstrukte wie span und ref für diese Features finden Sie unter RFC.

Übereinstimmung! In Berechnungsergebnisausdrücken

Mit F# 4.5. wird das neue Schlüsselwort match! eingefügt, das in Berechnungsausdrücken verwendet werden kann. Dieses Schlüsselwort wurde von John Wostenberg hinzugefügt. Diese syntaktische Besonderheit entspricht dem Schlüsselwort let!, gefolgt von match im Ergebnis. Weitere Informationen finden Sie unter RFC für match!.

Abschwächen des Bedarfs an Umwandlungen mit yield in Sequenz-, Listen- und Arrayausdrücken

Mit F# 4.5 werden jetzt einige Fälle abgeschwächt, in denen bei der Verwendung von yield eine Umwandlung nötig war, um einen Untertyp in einen Obertyp zu konvertieren. Diese Beschränkung war schon seit F# 3.1 für diese Ausdrücke nicht mehr notwendig, wenn yieldnicht verwendet wurde. Deswegen sorgt diese Änderung dafür, dass die Verhaltensweisen vereinheitlicht werden. Weitere Informationen zu diesem Feature finden Sie unter RFC.

Zulassen von Einzügen bei Listen- und Arrayklammern

Mit F# 4.5 wird jetzt die Einzugsregel für Listen- und Arrayklammern abgeschwächt, die es in der Vergangenheit erforderlich machte, im darauffolgenden Bereich einen Einzug einzufügen, wenn sich die Klammern in einer eigenen Zeile befanden. Diese ehemalige Anforderung hat immer für Verwirrung gesorgt, insbesondere bei F#-Anfängern. Außerdem ist die Anforderung nicht mehr für F#-Sequenzausdrücke erforderlich. Dadurch befinden sich Array- und Listenausdrücke jetzt in demselben Zustand wie Sequenzausdrücke. Weitere Informationen zu diesem Feature finden Sie unter RFC.

Ausgeben von Enumerationsfehlern als öffentlich

F# 4.5 gibt jetzt Enumerationsfälle immer als öffentlich aus und passt sich so an die Ausgabe von Enumerationsfällen in C# an. Dadurch wird es für Profilerstellungstools einfacher, Protokolle aus F#-Code zu analysieren, in denen der Wert anstelle des Bezeichnungsnamens ausgegeben wurde. Weitere Informationen zu diesem Feature finden Sie unter RFC.

Verbesserungen am F#-Compiler

Neben den zuvor erwähnten Sprachfeatures wurden in F# 4.5 Verbesserungen am F#-Compiler vorgenommen. Dazu gehören:

  • Wir haben die Compilerleistung verbessert, indem wir bis zu 2,2 % aller Zuteilungen aus dem F#-Compiler (in verschiedenen Szenarios) entfernt haben.
  • Ein Fehler wurde behoben, durch den bei Verwendung von yield! mit einer strukturbasierten Enumeration eine AccessViolatioNException ausgelöst wurde.
  • Das Erben von FSharpFunc ist jetzt wieder möglich.
  • Endaufrufereignisse sind standardmäßig für Debugerstellvorgänge von F# für .NET Core deaktiviert. Sie sind für die Veröffentlichung aktiviert und stimmen dadurch mit dem F#-Desktopcompiler überein.
  • Probleme mit der Verweisnormalisierung für F# wurden jetzt behoben, sodass Sie transitive Assemblyverweise, die in eine Ausgabedatei geschrieben werden, jetzt steuern können. Dadurch können Sie den Vorgang ausführen, der in .NET Core der Assemblyumleitung entspricht.
  • Ein Fehler wurde behoben, durch den die Fehlermeldung beim Versuch eines dynamischen Aufrufs von Inlinefunktionen ignoriert wurde. Die Fehlermeldung führt jetzt einen Verteilvorgang durch.
  • F# respektiert jetzt das WarningsNotAsErrors-Flag, das Sie in Projektdateien festlegen können.
  • Wenn Branches einer Musterübereinstimmung nicht denselben Fehlermeldungstyp zurückgeben, wird nun eine geeignetere Formulierung verwendet. Diese wurde von Isaac Abraham bereitgestellt.
  • Ein interner Fehler, der ausgelöst wurde, wenn eine Schnittstellenimplementierung kompiliert wurde und zuvor keine überladene Methode implementiert worden war, wurde von Steffen Forkmann behoben.
  • Einige nicht benötigte Arraykopien in der lexikalischen Phase des Compilers wurden von Gauthier Segay entfernt.
  • Unvollständige Musterübereinstimmungen für F#-Enumerationen geben jetzt eine detaillierte Warnung aus, in der ein Beispiel für einen Fall genannt wird, der nicht abgedeckt ist (beigetragen von John Wostenberg).
  • „#nowarn 2003“ wird jetzt respektiert (beigetragen von Matthias Dittrich).
  • Ein Fehler, bei dem bei der Verarbeitung von C#-Erweiterungsmethoden eine F#-Überladungsauflösung verursacht wurde, wurde von Steffen Forkmann behoben.
  • Ein interner QueueList-Fehler in der Datenstruktur wurde von Steffen Forkmann behoben.
  • Außerdem haben Steffen Forkmann, Eugene Auduchinok und ncave. verschiedene kleinere Beiträge zur Optimierung und zur Codebereinigung geleistet.

F#-Kernbibliothek 4.5.x

Die folgenden Funktionen wurden zur F#-Kernbibliothek hinzugefügt:

  • Die Stapelüberwachung für async { }-Berechnungsausdrücke wurde deutlich verbessert. Benutzercode und Zeilennummern von Benutzern sollten jetzt in der Stapelüberwachung angezeigt werden. Weitere Informationen zu diesem Feature finden Sie unter RFC.
  • Die APIs FuncConvert.FromFunc und FuncConvert.FromAction, die die Überladungsvorgänge System.Func und System.Action auslösen, um die Zusammenarbeit mit C# zu unterstützen. Weitere Informationen zu diesem Feature finden Sie unter RFC.
  • ValueOption stellt einen neuen Typ dar, der jetzt verfügbar ist. Es handelt sich dabei um eins von vielen Features, die in Zukunft veröffentlicht werden und die Leistung aktiver Muster deutlich verbessern sollen. Weitere Informationen zu diesem Feature finden Sie unter RFC.
  • TryGetValue ist jetzt ein neuer Member des F#-Zuordnungstyps. Weitere Informationen zu diesem Feature finden Sie unter RFC.
  • Die hohe CPU-Auslastung beim ersten Aufruf von MailboxProcessor.TryReceive wurde jetzt reduziert.
  • Der Vergleich von bool nutzt jetzt einen schnellen generischen Vergleich (beigetragen von Vasily Kirichenko).
  • Der Zusammenfassungstext für Array.allPairs wurde aktualisiert und stimmt jetzt (beigetragen von Patrick McDonald).

F#-Toolverbesserungen

In diesem Release wurden die F#-Tools deutlich verbessert. Zu den Verbesserungen gehören u.a. Leistungsoptimierungen und neue Editor-Features. Viele Beiträge wurden außerdem von der Open Source-Community für F# geleistet. Dies umfasst u.a. die folgenden Funktionen:

  • Die IntelliSense-Leistung für .NET SDK-Projekte aller Art, einschließlich derer, für die Zielversionen festgelegt sind.
  • Die Communitymitglieder Vasily Kirichenko, Steffen Forkmann und Gauthier Segay haben daran mitgewirkt, die IntelliSense-Leistung für sehr große Projekte zu analysieren und zu verbessern. IntelliSense ist in sehr großen Dateien (mehr als 10.000 Codezeilen) jetzt doppelt so schnell wie zuvor.
  • Es wird in .NET SDK-Projekten keine Warnung mehr bei veralteten FSharp.Core-Versionen ausgelöst (obwohl das Paket installiert ist).
  • Für die QuickInfo, die in der XML-Dokumentation für ein Member nach einem . in IntelliSense angezeigt wird, wird kein Timeout mehr nach 10 Minuten ausgelöst.
  • Ein Fehler, bei dem keine Breakpoints mehr in Argumenten des Objektkonstruktors festgelegt werden konnten, wurde behoben.
  • Ein Fehler, bei dem ein umbenanntes Symbol dupliziert wurde, wenn es sich um einen generischen Fehler gehandelt hat, wurde behoben.
  • Vorlagen für .NET Framework (klassische F#-Vorlagen) verwenden nun FSharp.Core aus einem NuGet-Paket zur Ausrichtung an den F#-Vorlagen von .NET SDK.
  • Die automatische transaktionale Klammervervollständigung ist nun für die Klammerpaare (), [], {}, [||] und [<>] verfügbar. Wir haben zusammen mit Gibran Rosa daran gearbeitet.
  • Sie können nun auf einem F#-Symbol über STRG+Klick zur Definition wechseln. Die Einstellungen für diesen Befehl sind auch im Fenster Extras > Optionen aufgeführt.
  • Die Benutzeroberfläche für die IntelliSense-Leistung wurde bearbeitet, sodass die Konfiguration von veralteten Typüberprüfungsinformationen für verschiedene IDE-Features ermöglicht wird. Die Erläuterungen für jede Option sind nun in den QuickInfos für die jeweilige Einstellung verfügbar.
  • Die Hervorhebung der Klammerübereinstimmung markiert Klammern nun korrekt, was in Zusammenarbeit mit Vasily Kirichenko erreicht wurde.
  • Über „Gehe zu Definition“ können Sie nun ordnungsgemäß navigieren, wenn ein Typ rekursiv definiert wird (beigetragenen von Vasily Kirichenko).
  • Ein Fehler, der ausgegeben wurde, wenn ein automatisch importierter Namespace nicht geöffnet wurde, wenn der obere Teil einer Datei leer war, wurde von Vasily Kirichenko behoben.
  • Ein Fehler, der ausgegeben wurde, wenn printf-Spezifizierer, die Punkte enthalten, die falsche Farbe hatten, wurde von Vasily Kirichenko behoben.
  • Ein Fehler, bei dem alle geöffneten Elemente in einem rekursiven Modul als nicht verwendet betrachtet werden, wurde von Vasily Kirichenko behoben.
  • Die Leistung des Analysetools „Unused Opens“ für nicht verwendete geöffnete Elemente wurde von Vasily Kirichenko optimiert.
  • Die automatische Vervollständigung schlägt jetzt nur Optionen vor, die tatsächlich Attribute sind (beigetragen von Vasily Kirichenko).
  • QuickInfos für die Signaturhilfe werden nun für statische Typanbieterparameter auf der Site für Konstruktoraufrufe generiert (beigetragen von Vasily Kirichenko).
  • Ein Fehler, bei dem Fehlertypen, die als Maßeinheiten verwendet werden, als Verweistypen eingefärbt wurden, wurde von Vasily Kirichenko behoben.
  • Ein Fehler, bei dem die semantische Farbgebung während des Scrollens aus einigen Dateien verschwunden ist, wurde von Vasily Kirichenko behoben.
  • Es gibt nun eine experimentelle CodeLens-Implementierung, die von Victor Peter Rouven Müller beigetragen wurde. Aktivieren Sie diese unter Optionen > Text-Editor > F#> Code Fokus.
  • Ein Fehler, bei dem der Kompilierdienst für F# die Modulnamen in der XML-Dokumentation fälschlicherweise ausgelassen hat, wurde von Sebastian Urban behoben.
  • Code, der Dictionary mit ContainsKey und nachfolgenden Item-Aufrufen verwendet, wurde geändert, sodass er jetzt TryGetValue verwendet (von Eugene Auduchinok).
  • Jakob Majoka hat ebenso zum Prozess, eine andere API für QuickInfos zu nutzen, beigetragen.

Verbesserungen für die Infrastruktur, die Paketerstellung und für Open Source

Wir haben die folgenden Verbesserungen für die Infrastruktur, Paketerstellung und für unsere Open Source-Beitragserfahrung durchgeführt:

  • Der F#-Compiler, der mit Visual Studio geliefert wird, wird nicht länger als Singleton am F# Compiler SDK-Speicherort installiert. Er ist nun vollständig parallel zu Visual Studio, was bedeutet, dass parallele Installationen von Visual Studio nun tatsächlich über parallele F#-Tools- und Sprachfeatures verfügen.
  • Das NuGet-Paket „FSharp.Core“ ist nur signiert.
  • Die ETW-Protokollierung (Ereignisablaufverfolgung für Windows) wurde zu den F#-Tools und dem Compiler hinzugefügt.
  • Die sehr großen control.fs/control.fsi-Dateien in FSharp.Core wurden in async.fs/async.fsi, event.fs/event.fsi, eventmodule.fs/eventmodule.fsi, mailbox.fs/mailbox.fsi und observable.fs/observable.fsi aufgeteilt.
  • Es wurden .NET SDK-Versionen unserer Belastungstestartefakte für die Projektleistung hinzugefügt.
  • Wir haben Newtonsoft.Json aus unserer Codebasis entfernt, und nun muss ein Paket weniger für OSS-Mitwirkende heruntergeladen werden.
  • Wir verwenden jetzt die neuesten Version von „System.Collections.Immutable“ und „System.Reflection.Metadata“.

Verbesserungen bei der Konformität mit C++-Standards und dem C++-Toolset

Dieses Release enthält die folgenden Verbesserungen für die Übereinstimmung und Toolsets von C++:

  • Ein neuer experimenteller Präprozessor, der auf Tokens basiert und C++11-Standards entspricht (einschließlich der C99-Präprozessorfeatures), und der mit der Option „/experimental:preprocessor“ aktiviert wird. Dieser wird mit dem Makro _MSVC_TRADITIONAL gesteuert, das als 1 definiert ist, wenn der traditionelle Präprozessor verwendet wird und als 0, wenn der Präprozessor verwendet wird, der mit den neuen experimentellen Standards konform ist.
  • Die Developer-Eingabeaufforderung für Visual Studio unterstützt die Aktivierung der geminderten Visual C++-Runtimes für Variante 1 von Spectre (-vcvars_spectre_libs = spectre). Weitere Informationen zur Risikominderung bei Spectre finden Sie im Visual C++-Teamblog.
  • Zwei neue Erweiterungen zum SSA-Optimierer, die auf die moderne C++-Codegenerierung fokussiert sind: Bereinigung von redundantem Speicher und Faltung redundanter Branches.
  • Optimierte und im Speicher abgebildete E/A-Leistung im Linker zum Verringern der Linkzeit.

Plattformübergreifende C++-Entwicklung

Wir haben Folgendes zur plattformübergreifenden C++-Entwicklung für dieses Release hinzugefügt und verbessert:

  • Es wurde die Vorlage Hinzufügen>Neues Element zum Generieren einer CLANG-Formatdatei hinzugefügt, die der Codierungskonvention folgt, die für ClangFormat unter Extras>Optionen angegeben ist. Wenn die Visual Studio-Konvention ausgewählt wird, wird mithilfe der generierten Datei versucht, die aktuelle Formatierungskonfiguration von Visual Studio abzugleichen, die der Benutzer über Extras > Optionen angegeben hat.
  • Die ausgelieferte Version von „clang-format.exe“ wurde auf 6.0.0 aktualisiert.
  • Vorlagen, um das Hinzufügen von Konfigurationen zu „Cppproperties.json“ zu vereinfachen
  • Es wurden Vorlagen hinzugefügt, um das Hinzufügen von Konfigurationen zu „Cmakesettings.json“ zu vereinfachen (Abbildung 7).
Configuration templates for CMake
(Abbildung 7) Konfigurationsvorlagen für CMake

C++-Produktivität

Die folgenden Erweiterungen und Verbesserungen wurden zur C++-Produktivität hinzugefügt:

  • C++-QuickInfos zu Makros zeigen nun nicht nur die Definition an, sondern auch, was sie erweitern. Dies ist besonders für komplexe Makros von Vorteil, die auf andere Makros verweisen. Denn so wird klassifiziert, mit was der Makrobezeichner vom Präprozessor ersetzt wird.
  • Eine neue Glühbirne für die Schnellkorrektur wurde hinzugefügt, um Makros in constexpr zu konvertieren. Durch dieses neue Tool kann der Code modernisiert werden.
  • IntelliSense für Vorlagen bieten Ihnen weitere Informationen zu Vorlagenargumenten, damit Sie von den Vorteilen von IntelliSense innerhalb Ihres Vorlagentexts profitieren können (Abbildung 8).
Template IntelliSense
(Abbildung 8) IntelliSense-Vorlage
  • Wir arbeiten daran, unsere Codeanalyse zu aktualisieren. Sie können nun die neuen, sich in Bearbeitung befindlichen Features unter Extras>Optionen>Text-Editor>C++>Experimentell>Codeanalyse aktivieren. Codeanalysen können im Hintergrund ausgeführt werden, wenn Dateien geöffnet oder gespeichert werden. Die Ergebnisse werden in der Fehlerliste und als grüne Wellenlinien im Editor angezeigt (Abbildung 9).
In-editor code analysis
(Abbildung 9) Codeanalyse im Editor

Verbesserungen beim Debuggen in C++

Die folgenden Verbesserungen für das Debuggen wurden vorgenommen:

  • Nur eigenen Code ermöglicht Ihnen nun, Code aus System- oder Drittanbieterbibliotheken für C++ zu überspringen und zusätzlich diese Aufrufe im Aufruflistenfenster zu reduzieren. Sie können dieses Verhalten für beliebige C++-Bibliotheken steuern, wenn Ihr Code mit /JMC kompiliert wird und Nichtbenutzer-Bibliothekspfade in einer NATJMC-Datei angegeben sind. Wenn die Systembibliothek einen Benutzercode abruft, wenn Sie einen Einzelschritt durchführen, überspringt der Debugger alle Systemcodes und hält bei der ersten Zeile des Benutzercoderückrufs an (Abbildung 10).
Just My Code
(Abbildung 10) Nur eigenen Code
  • Datenhaltepunkte können nun innerhalb der Überwachungselement-, Schnellüberwachungs-, Autos- und Lokalfenster festgelegt werden. Dies ermöglicht Ihnen, anzuhalten, sobald ein im Arbeitsspeicher gespeicherter Wert mit nur ein paar kurzen Klicks geändert wird.
  • Quellenlink ermöglicht Ihnen das Einbetten von Informationen über eine ausführbare Datei oder den ursprünglichen Quellcode einer Bibliothek in die PDB-Datei während der Kompilierung.
  • Während des Debuggens bleibt das Konsolenfenster nun standardmäßig geöffnet, wenn das Programm die Ausführung beendet (ähnlich wie beim Ausführen des Programms ohne Debugger). Dieses Verhalten kann unter Extras > Optionen > Debuggen > Allgemein zurückgesetzt werden, sodass die Konsole automatisch geschlossen wird.

Verbesserungen für JavaScript und TypeScript

TypeScript 3.0

Die Version 15.8 von Visual Studio 2017 schließt nun standardmäßig TypeScript 3.0 ein. Weitere Informationen zu diesem Release finden Sie in der Releaseankündigung zu TypeScript 3.0.

Verbesserte Vue.js-Unterstützung

Die Unterstützung der Vue.js-Bibliothek wurde verbessert. Dies gilt insbesondere für VUE-Dateien, die auch als Einzeldateikomponenten bekannt sind. Hierdurch wird die Bearbeitung von Skriptblöcken in VUE-Dateien verbessert. So werden beispielsweise in TypeScript erstellte Skriptblöcke durch das lang="ts"-Attribut für das jeweilige Skriptelement unterstützt. Hinweis: Zum Konvertieren von VUE-Dateien in zur Laufzeit benötigte HTML- und JS-Dateien ist ein Buildvorgang erforderlich, der auf Webpack oder einen ähnlichen Bundler zurückgreift. Für weitere Informationen gehen Sie zur Seite über einzelne Dateikomponenten.

Ist die Node.js-Workload installiert, ist nun im Dialogfeld „Neues Projekt“ über den Pfad „JavaScript/Node.js“ oder „TypeScript/Node.js“ die Vorlage „Grundlegende Vue.js-Webanwendung“ verfügbar. Im Beispiel unten (Abbildung 11) wird die Bearbeitung von TypeScript-Code innerhalb eines Skriptblocks in einer VUE-Datei demonstriert.

Editing a .vue file
(Abbildung 11) Bearbeiten einer VUE-Datei

ESLint-Verbesserungen

Für dieses Release wurde die ESLint-Unterstützung neu implementiert. Folgende Verbesserungen wurden an ESLint vorgenommen:

  • Visual Studio führt nun nicht nur für gespeicherte Dateien, sondern auch für aktuell bearbeitete JavaScript-Dateien ein Linting durch.
  • Die Ergebnisse können nicht nur für geöffnete Dateien, sondern für alle JS-Dateien in Ihrem Projekt angezeigt werden. Wenn für bestimmte Projektteile kein Linting durchgeführt werden soll, können in einer ESLINTIGNORE-Datei die Verzeichnisse und Dateien angegeben werden, die ignoriert werden sollen.
  • Aufgrund einer Aktualisierung von ESLint wird nun standardmäßig ESLint 4 verwendet. Wenn für Ihr Projekt jedoch eine lokale ESLint-Installation vorliegt, wird stattdessen diese Version verwendet.

Sie können ESLint in Visual Studio global deaktivieren. Deaktivieren Sie dazu die Einstellung ESLint aktivieren unter **Extras > Optionen > Text-Editor > Javascript/Typescript > Linting ** (Abbildung 12).

ESLint Options
(Abbildung 12) ESLint-Optionen

Verbesserungen am Feature „Ordner öffnen“ für Node.js

Wenn die Node.js-Workload installiert und das Feature „Ordner öffnen“ verwendet wird, können zahlreiche Verbesserungen beim Arbeiten mit JavaScript und TypeScript genutzt werden. Die Optimierungen betreffen u.a. das Verwalten von npm-Paketen, das Kompilieren von TypeScript-Code, das Starten und Debuggen mit „Node.exe“ sowie das Ausführen von npm-Skripts und Komponententests.

Weitere Informationen finden Sie unter Schreiben von JavaScript- und TypeScript-Code in Visual Studio ohne Projektmappen oder Projekte.

Leistungsfähigerer Editor

In früheren Releases wurden alle JavaScript- und TypeScript-Sprachdienstvorgänge von einem einzelnen Node.js-Prozess verarbeitet. Dadurch konnte es beim Editor zu Verzögerungen kommen, wenn Befehle, die Benutzereingaben beeinflussen (beispielsweise die automatische Formatierung nach einem Zeilenvorschub), ausgeführt wurden, während ein aufwendiger Vorgang (beispielsweise die Codeanalyse zur Fehlersuche) bereits verarbeitet wurde. Zur Vermeidung dieses Problems wird nun ein eigener Prozess für die Vorgänge verwendet, die Bearbeitungsvorgänge am stärksten beeinflussen. Dieser Prozess nutzt im Vergleich zum vorhandenen Sprachdienstprozess deutlich weniger Systemressourcen. Wenn Sie den neuen Prozess trotz der Verbesserungen deaktivieren möchten, aktivieren Sie unter Extras > Optionen > Text-Editor > JavaScript/TypeScript >Sprachdienst das Kontrollkästchen Disable dedicated syntax process (Dedizierten Syntaxprozess deaktivieren).

Visual Studio Web-Tools

Der Bibliotheks-Manager ist ein neues Feature, das in Visual Studio 2017 enthalten ist. Damit können Sie clientseitige Bibliotheken in Ihren Webprojekten verwalten.

Containertools

Wir haben neue Docker-Container für einzelne Projekte für ASP.NET Core-Webprojekte hinzugefügt. Dadurch werden die vorhandenen Docker Compose-basierten Containertools ergänzt, und somit wird eine einfachere Möglichkeit zum Erstellen und Debuggen von Docker-Containern direkt über Visual Studio bereitgestellt.

Sie können beim Erstellen des Projekts Docker-Unterstützung hinzuzufügen (Abbildung 13):

Enable Docker Support
(Abbildung 13) Aktivieren der Docker-Unterstützung

Alternativ können Sie die Docker-Unterstützung für ein vorhandenes Projekt über das Kontextmenü des Projekts im Projektmappen-Explorer aktivieren (Abbildung 14). Sobald dies geschieht, erstellt Visual Studio eine einzelne Docker-Datei in diesem Projekt. Sie haben die Option, entweder Windows oder Linux auszuwählen.

Add Docker Support
(Figure 14) Hinzufügen der Docker-Unterstützung

Visual Studio fügt auch ein Debuggerstartprofil (Abbildung 15) für Docker hinzu, damit das Projekt debuggt werden kann, während es in einem Container ausgeführt wird.

Docker Launch Profile
(Abbildung 15) Docker-Startprofil

Wenn Sie über eine Projektmappe mit mehreren Docker-Projekten verfügen, wird standardmäßig nur ein Container ausgeführt, wenn Sie die Projektmappe starten. Wenn Sie mehrere Container gleichzeitig ausführen möchten, können Sie einen Rechtsklick auf die Projektmappe im Projektmappen-Explorer ausführen und Startprojekte festlegen auswählen. Klicken Sie anschließend auf Mehrere Startprojekte, und wählen Sie aus der Dropdownliste Aktion für alle Projekte, die Sie ausführen möchten, den Eintrag Starten oder Starten ohne Debuggen aus.

Sobald Ihr Containerprojekt nach Ihren Wünschen ausgeführt wird, können Sie einen Rechtsklick auf das Projekt ausführen und Build Docker Image (Docker-Image erstellen) auswählen, um lokal ein Image zu erstellen, wenn Sie bereit sind, eine Übertragung an Azure Container Registry oder DockerHub durchzuführen.

Sie können die vorhandene, auf Docker Compose basierende Funktionalität auch einem ASP.NET Core-Webprojekt über die neue Option Container Orchestrator Support (Containerorchestratorunterstützung) hinzufügen (Abbildung 16). Klicken Sie mit der rechten Maustaste auf das ASP.NET Core-Webprojekt im Projektmappen-Explorer, wählen Sie Hinzufügen > Container Orchestrator Support (Containerorchestratorunterstützung) aus, und klicken Sie dann im Dropdownmenü auf Docker Compose.

Add Container Orchestrator Support
(Abbildung 16) Hinzufügen der Orchestratorunterstützung

Verbesserungen für die Veröffentlichung

Dieses Release enthält die folgenden Verbesserungen für die Veröffentlichung:

  • Wenn Sie einen Docker-Container in einer Containerregistrierung veröffentlichen, können Sie nun das Tag für ein Image anpassen. Sie können entweder manuell ein Tag hinzufügen (Standardeinstellung ist „latest“ – letztes) oder das automatisch generierte Tag verwenden, um sicherzustellen, dass jedes Tag eindeutig ist.
  • Wenn Sie einen neuen Azure App Service-Dienst erstellen, können Sie auch Application Insights konfigurieren, damit Telemetriedaten automatisch gesammelt werden. Wenn Sie eine Region auswählen, die auch über Application Insights verfügt, wird der Dienst standardmäßig aktiviert. Wenn Sie eine Region auswählen, die Application Insights noch nicht enthält, können Sie aus der Dropdownliste manuell eine andere Region für Ihre Application Insights-Ressource auswählen.
  • Wenn Sie ein Azure Functions-Projekt veröffentlichen, können Sie es mithilfe des neuen Features Run-From-Zip veröffentlichen.

Visual Studio-Tools für Xamarin

Dieses Release enthält die folgenden Updates für Xamarin:

  • Unterstützung für Xcode 9.4 wurde hinzugefügt.
  • Wenn Sie ein neues Xamarin.Forms-Projekt erstellen, ist die Standardoption zur Freigabe von Code jetzt .NET Standard. Die Option „Freigegebenes Projekt“ ist noch immer verfügbar.
  • Wir haben Verbesserungen von inkrementellen Builds für Xamarin.Android hinzugefügt. Xamarin.Android verwendet Dateien, die im Zwischenausgabeverzeichnis generiert werden, um inkrementelle Builds zu erreichen, die schneller als vollständige Builds sind. Zuvor wurden die Dateien ungültig und haben bei der darauffolgenden Ausführung zu einem vollständigen Build geführt, wenn Sie das Zielframework Ihres Projekts geändert haben. In diesem Release werden die Dateien jetzt in Ordnern nach Framework beibehalten, damit Sie zwischen den verschiedenen Zielframeworks wechseln und noch immer von den inkrementellen Builds profitieren können. Durch Bereinigen des Projekts können Sie den Speicherplatz auf dem Datenträger, der von den beibehaltenen Dateien genutzt wird, freigeben.
  • Wir haben die minimale Unterstützung für Xamarin.Mac-Bindungsprojekte in Visual Studio 2017 hinzugefügt. So kann Visual Studio Xamarin.Mac-Bindungsprojekte als unterstützt erkennen und laden. Sie können ebenso Xamarin.Mac-Bindungsprojekte erstellen. Der Buildprozess wird jedoch lokal und ohne die native Mac-Toolkette ausgeführt. Die generierten IL-Assemblys können also nicht zum Ausführen oder Debuggen in Apps verwendet werden.

Hyper-V-Unterstützung für den Android-Emulator

Mit diesem Release wird bei der Ausführung unter dem Windows 10-Update vom April 2018 die Unterstützung für den Google Android-Emulator, der mit Hyper-V kompatibel ist, hinzugefügt (Abbildung 17). Damit haben Sie die Möglichkeit, den Android-Emulator von Google parallel mit anderen Hyper-V-basierten Technologien zu verwenden, einschließlich Hyper-V-VMs, Docker-Tools, den HoloLens-Emulator usw. Entwickler mobiler Apps, die Hyper-V nutzen, haben nun Zugriff auf einen schnellen Android-Emulator, der grundsätzlich die neuesten Android-APIs unterstützt, mit vorkonfigurierten Google Play Services arbeitet und alle Features des Android-Emulators unterstützt, einschließlich Kamera, Geolocation und Quick Boot.

Screenshot of both the Google Android emulator and HoloLens emulator running at the same time.
(Abbildung 17) Google Android-Emulator und HoloLens-Emulator

Xamarin.Android-Designer

Für Xamarin.Android wurden wichtige Verbesserungen am Designer durchgeführt. Highlights:

  • ein Editor mit geteilter Ansicht, mit dem Sie Ihre Layouts gleichzeitig erstellen, bearbeiten und eine Vorschau dafür erstellen können (Abbildung 18).
Screenshot of the Xamarin.Android split-view editor.
(Abbildung 18) Xamarin.Android-Editor mit geteilter Ansicht
  • Verbesserte IntelliSense-Benutzeroberfläche und Zuverlässigkeit der benutzerdefinierten Steuerelemente
  • Unterstützung für Beispieldaten für vom System bereitgestellte Werte

Xamarin.Forms-Vorschau

Die Xamarin.Forms-Vorschau verfügt nun über Toolbox-Unterstützung bei der Verwendung der Xamarin.Forms-Version 3.1.0.583944 oder höher. Xamarin.Forms-Steuerelemente werden in der Toolbox angezeigt, deshalb sind sie für diejenigen, die noch nicht mit dem Toolkit gearbeitet haben, leichter auffindbar. Sie können ein Steuerelement auch per Drag & Drop in den XAML-Code-Editor einfügen, um das Steuerelement der Seite hinzuzufügen. Die Xamarin.Forms-Vorschau ist nun Teil des XML-Editors. Sie können diesen mit dem Symbol „Erweitern“, das sich am Rand des Editorbereichs befindet, öffnen und schließen.

Python

Mit diesem Release werden die folgenden Verbesserungen für Python-Entwickler hinzugefügt:

  • Python IntelliSense verwendet nun Typeshed-Definitionen, um reichhaltigere Ergebnisse für Bibliotheken bereitzustellen, bei denen automatische Vervollständigungen von der statischen Analyse nicht abgeleitet werden können.
  • Der experimentelle Debugger, der erstmals in den Vorschauversionen 15.7 erwähnt wurde, ist nun die Standard-Debug-Engine für Python und bietet schnelleres und zuverlässiges Debuggen für Python-Code.
  • Wir haben Unterstützung für Python 3.7 hinzugefügt, einschließlich Fehlerkorrekturen, um das Anfügen während des Debuggens, die Profilerstellung und das Debuggen im gemischten Modus (sprachübergreifend) zu ermöglichen.
  • Weitere Informationen zu den oben genannten Features finden Sie in unserem Blogbeitrag zu Python in der Version 15.8 von Visual Studio 2017.

Migrieren von lokalen Azure-Funktionseinstellungen

Das Dialogfeld „Anwendungseinstellungen verwalten“, das in der Zusammenfassung der Veröffentlichung verfügbar ist, zeigt nun Werte aus Ihrer „local.settings.json“-Datei an und ermöglicht Ihnen, Werte zu Ihrer remoten Azure-Funktions-App, die in Azure gehostet ist, zu migrieren.

Verbundene Dienste

Sie können Continuous Delivery für Azure Functions direkt über Visual Studio 2017 für Projektmappen mit Azure Functions-Projekten konfigurieren.

Verbesserung am Test-Explorer

Der Test-Explorer zeigt nun einen informativeren Bereich für die Teststatuszusammenfassung (unterer Bereich des Test-Explorers) an, sobald eine Gruppierung in der Hierarchieansicht ausgewählt wird. Im Bereich werden nun viele fehlgeschlagene und erfolgreiche Tests sowie Tests, die in dieser Gruppierung nicht ausgeführt wurden, angezeigt.

Neue Erweiterungsfeatures

Sprachserverprotokoll

Das Sprachserverprotokoll wird nun von Visual Studio nativ unterstützt. Erweiterungsersteller können Erweiterungen erstellen, die mit vorhandenen Sprachservern kommunizieren, um in Visual Studio zusätzliche Sprachunterstützung hinzuzufügen. Benutzer der Erweiterung können diese Erweiterungen installieren, um ihre bevorzugte Sprache in Visual Studio zu verwenden, z.B. Rust.

AsyncPackage-Vorlage

Erweiterungsersteller können nun Elementvorlagen verwenden, um AsyncPackages für die Leistungsoptimierung ihrer Erweiterung zu erstellen. Erfahren Sie mehr über AsyncPackages.

Extension Packs

Geben Sie ganz einfach Ihre bevorzugten Erweiterungen frei, oder richten Sie eine neue Visual Studio-Installation mit all Ihren Erweiterungen ein, indem Sie ein Erweiterungspaket verwenden. Erweiterungspakete ermöglichen Ihnen, eine Erweiterungsliste zu erstellen, diese in eine Erweiterung zu packen und sie schnell zur Masseninstallation dieser Erweiterungen zu verwenden.

Veröffentlichen der Befehlszeilenerweiterung

Veröffentlichen Sie über die Befehlszeile Ihre Erweiterungen im Visual Studio Marketplace.

.NET Core SDK 2.1.400

Die Version 15.8 von Visual Studio 2017 enthält das .NET Core SDK 2.1.400. Die neuen SDK-Features enthalten Folgendes:

  • Hinzugefügte NUnit-Vorlagen
  • Hinzugefügte Unterstützung für signierte globale Tools
  • Verbesserter Hilfetext zum besseren Verständnis

Es wurden 32 Probleme auf der .NET Core-CLI geschlossen.
Es wurden 20 Probleme im .NET Core SDK geschlossen.

Quellcodeverwaltung

Dateien, die dem Projekt direkt über den Datei-Explorer hinzugefügt wurden, zeigen nun für .NET Core-Projekte die korrekten Symbole für die Git- und TFS-Nachverfolgung im Projektmappen-Explorer an, ohne dass die Projektmappe neu geladen werden muss.

.NET-Testadaptererweiterung

Für den .NET-Testadapter liegt der unten beschriebene Breaking Change vor. Außerdem werden veraltete Komponenten genannt:

  • Breaking Change: Alle Testprojekte müssen ihren NuGet-Verweis des .NET-Testadapters in ihrer CSPROJ-Datei enthalten. Wenn dies nicht der Fall ist, wird die Testausgabe im Projekt angezeigt, wenn die Ermittlung durch eine Testadaptererweiterung nach einem Build gestartet wird oder wenn der Benutzer versucht, die ausgewählten Tests auszuführen:
    • Das Testprojekt {<Vollständiger Pfad des Testprojekts>} verweist auf keine .NET NuGet-Adapter. Die Testermittlung oder -ausführung funktioniert für dieses Projekt möglicherweise nicht. Es wird empfohlen, in jedem Testprojekt in der Projektmappe auf NuGet-Testadapter zu verweisen.
  • .NET-Testframeworks haben ihre Adapter in NuGet-Paketen veröffentlicht und distanzieren sich von Visual Studio-Erweiterungen. Die Unterstützung für .NET-Testadapter, die über Erweiterungen zur Verfügung gestellt wurden, ist zwar veraltet, wird aber weiterhin unterstützt. Daher sind nun zwei neue Optionen unter Extras > Optionen > Test verfügbar.
    • Die erste Option ermöglicht Visual Studio, nur die Testadapter zu verwenden, die im Ordner für Testassemblys gefunden werden (vom NuGet-Verweis des Testadapters aufgefüllt), oder die in der RUNSETTINGS-Datei angegeben werden.
    • Mit der zweiten Option kann Visual Studio ein „Fallback“ auf das alte Verhalten durchführen und nach Testadaptererweiterungen für Projekte suchen, die über keinen NuGet-Verweis des Testadapters verfügen. Beide Optionen sind in der Standardeinstellung aktiviert, es wird also kein Standardverhalten in diesem Release geändert.
  • Hinweis: Testadapter, die nicht für .NET spezifiziert sind, sind nicht von dieser Änderung betroffen.

Unterstützung von .NET Framework-Geheimnissen unter ASP.NET

Sie können für .NET Framework-Projekte unter ASP.NET, die für .NET Framework 4.7.1 oder höher konzipiert sind, Geheimnisse, die nicht in Ihrem Quellcode enthalten sein sollen, in „usersecrets.xml“ öffnen und speichern. Klicken Sie dazu mit der rechten Maustaste auf das Projekt, und wählen Sie „Managed User Secrets“ (Verwaltete Benutzergeheimnisse) aus.

Verbessern der Leistung von .NET Framework unter ASP.NET

Wenn das .NET Compiler-Paket in einem .NET Framework-Projekt unter ASP.NET nicht mehr aktuell ist, fordert Visual Studio Sie beim Öffnen des Projekts dazu auf, ein Upgrade für das Paket durchzuführen, um dadurch die Buildleistung zu verbessern.

.NET Framework 4.7.2

Visual Studio 2017 Version 15.8 bietet nun die Entwicklungstools von .NET Framework 4.7.2 auf allen unterstützten Plattformen, wobei die 4.7.2-Runtime enthalten ist. .NET Framework 4.7.2 bietet mehrere neue Features und Verbesserungen sowie zahlreiche Korrekturen der Zuverlässigkeit, Stabilität, Sicherheit und Leistung.

Weitere Einzelheiten zu .NET Framework 4.7.2 finden Sie in diesen Artikeln:

Verzögern des Ladevorgangs für Pakete

Visual Studio verzögert nun das Laden von asynchronen Paketen, die so konfiguriert sind, dass sie bis nach dem vollständigen Start der Visual Studio-IDE und nach dem Ladevorgang der Projektmappe automatisch geladen werden. Diese Änderung wirkt sich nicht auf automatisch synchron geladene Pakete auf. Benutzer können im Aufgabenstatuscenter in der linken oberen Ecke auf der Statusleiste den Fortschritt überwachen. Ersteller von Erweiterungen, die AsyncPackages erstellen, sollten ihre Erweiterungen testen. Weitere Informationen finden Sie unter Improving the responsiveness of critical scenarios by updating auto load behavior for extensions (Verbessern der Reaktionsfähigkeit kritischer Szenarios durch Updaten des Autoload-Verhaltens für Erweiterungen).


---

Release Notes Icon Hinweise zu Sicherheitsempfehlungen für Visual Studio 2017 Version 15.8

Visual Studio 2017, Version 15.8.7 Service Release– veröffentlicht am 10. Oktober 2018

CVE-2018-8292 Sicherheitsrisiko bei der Veröffentlichung von Informationen in .NET Core

In .NET Core existiert ein Sicherheitsrisiko durch Umgehung des .NET Core-Sicherheitsfeatures, wenn HTTP-Authentifizierungsanforderungen unbeabsichtigt in einer ausgehenden Anforderung verfügbar gemacht werden, die auf eine HTTP-Umleitung trifft. Ein Angreifer, der dieses Sicherheitsrisiko erfolgreich ausgenutzt hat, kann die Informationen nutzen, um die Webanwendung weiter zu kompromittieren. Das Sicherheitsupdate reagiert auf dieses Sicherheitsrisiko, indem korrigiert wird, wie .NET Core-Anwendungen HTTP-Umleitungen behandeln.

Visual Studio 2017, Version 15.8.4 Service Release– veröffentlicht am 11. September 2018

CVE-2018-8409: Sicherheitsrisiko durch .NET Core-Denial-of-Service-Angriffe

Ein Denial-of-Service-Sicherheitsrisiko ist in .NET Core 2.1 vorhanden, wenn „System.IO.Pipelines“ Anforderungen nicht ordnungsgemäß verarbeitet. Ein Angreifer, der dieses Sicherheitsrisiko erfolgreich ausnutzt, kann ein Denial-of-Service einer Anwendung verursachen, die „System.IO.Pipelines“ verwendet. Dieses Sicherheitsrisiko kann remote ohne Authentifizierung ausgenutzt werden. Ein nicht authentifizierter Remoteangreifer könnte dieses Sicherheitsrisiko durch Ausgeben speziell gestalteter Abfragen an die Anwendung ausnutzen.

CVE-2018-8409: Sicherheitsrisiko durch ASP.NET Core-Denial-of-Service-Angriffe

Ein Denial-of-Service-Sicherheitsrisiko ist in ASP.NET Core 2.1 vorhanden, dass Webanforderungen nicht ordnungsgemäß verarbeitet werden. Ein Angreifer, der dieses Sicherheitsrisiko erfolgreich ausnutzt, kann ein Denial-of-Service einer ASP.NET Core-Webanwendung verursachen. Dieses Sicherheitsrisiko kann remote ohne Authentifizierung ausgenutzt werden. Ein nicht authentifizierter Remoteangreifer könnte dieses Sicherheitsrisiko durch Ausgeben speziell gestalteter Webanfragen an die ASP.NET Core-Anwendung ausnutzen.

Visual Studio 2017 Version 15.8– veröffentlicht am 14. August 2018

CVE-2018-0952: Sicherheitsrisiko durch Rechteerweiterungen beim Diagnosehub-Standardsammlungsdienst

In einem Visual Studio-Dienst besteht aufgrund möglicher Rechteerweiterungen ein Sicherheitsrisiko, durch das ein Benutzer ohne Administratorberechtigungen beim Schreiben von Dateien Systemberechtigungen erlangen kann. Ein Angreifer, der dieses Risiko ausnutzt, kann daher mit Systemberechtigungen Schreibvorgänge für Dateien ausführen, obwohl nur Benutzerberechtigungen vorliegen. Mit dem vorliegenden Sicherheitsupdate wird das Problem gelöst, indem für den aktuellen Benutzer ein Identitätswechsel ausgeführt wird, wodurch der Zugriff auf den Dateispeicherort überprüft wird.

Visual Studio 2017 Version 15.8, Vorschauversion 4 – Veröffentlichung: 10. Juli 2018

CVE-2018-8172: Sicherheitsrisiko durch Remotecodeausführung in Visual Studio

Ein Sicherheitsrisiko bei der Remotecodeausführung kann zu Missbrauch des Computers eines Benutzers führen, indem ein speziell entwickeltes Projekt oder eine Ressourcendatei geöffnet wird. Das Sicherheitsupdate befasst sich mit diesem Sicherheitsrisiko, indem korrigiert wird, wie Visual Studio das Quellmarkup einer Datei überprüft.

CVE-2018-8260: Sicherheitsrisiko durch Remotecodeausführung in .NET Framework

In der .NET-Software liegt durch eine mögliche Remotecodeausführung ein Sicherheitsrisiko vor, bei dem Angreifer auf dem Computer eines Benutzer beliebigen Code im Kontext des aktuellen Benutzers ausführen können. Das Sicherheitsupdate befasst sich mit diesem Sicherheitsrisiko, indem korrigiert wird, wie .NET das Quellmarkup einer Datei überprüft.

CVE-2018-8232: Sicherheitsrisiko durch Manipulation des Microsoft Macro Assemblers für .NET

Manipulation von Sicherheitsrisiken, die in Zusammenhang mit dem nicht ordnungsgemäßen Überprüfen von Code durch Microsoft Macro Assembler stehen. Das Sicherheitsupdate beseitigt dieses Sicherheitsrisiko, indem sichergestellt wird, dass Microsoft Macro Assembler die Codelogik ordnungsgemäß überprüft.

CVE-2018-8171: Sicherheitsrisiko durch Umgehung des ASP.NET Core-Sicherheitsfeatures

Die Manipulation durch Umgehung des ASP.NET Core-Sicherheitsfeatures tritt auf, wenn die Anzahl der falschen Anmeldeversuche nicht überprüft wird. Dies kann dazu führen, dass ein Angreifer unendlich viele Authentifizierungsversuche durchführen kann. Das Update beseitigt das Sicherheitsrisiko, indem die Anzahl der falschen Anmeldeversuche überprüft wird.

Visual Studio 2017 Version 15.8, Vorschauversion 3 – Veröffentlichung: 26. Juni 2018

CVE-2018-11235: Microsoft-Sicherheitsempfehlung für Git-Sicherheitsrisiko

Auch ein von der Git-Gemeinschaft offengelegtes Sicherheitsrisiko in Git wurde behoben. Die Sicherheitslücke kann zur Ausführung beliebigen Codes führen, wenn ein Benutzer ein bösartiges Repository klont.

Visual Studio 2017 Version 15.8, Vorschauversion 1 – Veröffentlichung: 08. Mai 2018

CVE-2018-0765: Microsoft-Sicherheitsempfehlung für Denial-of-Service-Sicherheitsrisiko für .NET Core

  • Microsoft veröffentlicht diese Sicherheitsempfehlung, um Informationen über ein Sicherheitsrisiko in .NET Core und der nativen .NET-Version 2.0 bereitzustellen. Dieser Ratgeber enthält ebenso Anweisungen dazu, wie Entwickler ihre Anwendungen aktualisieren können, um dieses Sicherheitsrisiko zu entfernen.
  • Microsoft ist sich eines Denial-of-Service-Sicherheitsrisikos bewusst, dass vorhanden ist, wenn .NET Framework und .NET Core XML-Dokumente nicht ordnungsgemäß verarbeiten. Ein Angreifer, der dieses Sicherheitsrisiko erfolgreich ausnutzt, kann ein Denial-of-Service einer .NET Framework-, .NET Core- oder nativen .NET-Anwendung verursachen.
  • Durch dieses Update wird die Sicherheitslücke geschlossen. Es wird korrigiert, wie .NET Framework-, .NET Core- und native .NET-Anwendungen die XML-Dokumentverarbeitung behandeln.
  • Wenn es sich bei Ihrer Anwendung um eine ASP.NET Core-Anwendung handelt, wird Entwicklern geraten, ein Update auf ASP.NET Core 2.0.8 durchzuführen.

Release Notes IconVisual Studio 2017 Version 15.8.1

Veröffentlichung: 17. August 2018

Wichtigste behobene Probleme in Version 15.8.1

Die folgenden Probleme wurden in Version 15.8.1 behoben:

  • Ein Problem wurde behoben, bei dem Visual Studio unerwartet geschlossen wurde, wenn ein Browserfenster während des Debuggen eines Webprojekts geschlossen wurde.

Release Notes IconVisual Studio 2017 Version 15.8.2

Veröffentlichung: 28. August 2018

Behebung der wichtigsten Probleme in Version 15.8.2

In Version 15.8.2 wurden folgende von Kunden gemeldete Probleme behoben:


Release Notes IconVisual Studio 2017 Version 15.8.3

Veröffentlichung: 6. September 2018

Behebung der wichtigsten Probleme in Version 15.8.3

In Version 15.8.3 wurden folgende von Kunden gemeldete Probleme behoben:


Release Notes IconVisual Studio 2017 Version 15.8.4

Veröffentlichung: 11. September 2018

Behebung der wichtigsten Probleme in Version 15.8.4

In Version 15.8.4 wurden folgende von Kunden gemeldeten Probleme behoben:

Sicherheitsempfehlungen


Release Notes IconVisual Studio 2017, Version 15.8.5

Veröffentlichung: 20. September 2018

Zusammenfassung der Neuerungen in Version 15.8.5

  • Visual Studio-Tools für Xamarin unterstützt jetzt Xcode 10.

Wichtigste behobene Probleme in Version 15.8.5

In Version 15.8.5 wurden folgende von Kunden gemeldete Probleme behoben:

Details zu den Neuerungen in Version 15.8.5

Visual Studio-Tools für Xamarin

Visual Studio-Tools für Xamarin unterstützen jetzt Xcode 10, wodurch Sie Apps für iOS 12, tvOS 12 und watchOS 5 erstellen und debuggen können. Weitere Informationen zu den neuen verfügbaren Features finden Sie unter how to get ready for iOS 12 (Vorbereitung für iOS 12) und our introduction to iOS 12 (Einführung in iOS 12).


Release Notes IconVisual Studio 2017 Version 15.8.6

Veröffentlichung: 2. Oktober 2018

Zusammenfassung der Neuerungen in Version 15.8.6

Wichtigste behobene Probleme in Version 15.8.6

In Version 15.8.6 wurden folgende von Kunden gemeldete Probleme behoben:

Details zu den Neuerungen in Version 15.8.6

Neuestes Windows 10 SDK für Entwickler der universellen Windows-Plattform

Das neueste Windows 10 SDK (Build 17763) steht jetzt als optionale Komponente in der Workload „Entwicklung für die universelle Windows-Plattform“ zur Verfügung. Sie können dieses SDK zur Workload hinzufügen, indem Sie das Kontrollkästchen Windows 10 SDK (10.0.17763.0) aktivieren.


Release Notes IconVisual Studio 2017, Version 15.8.7

Veröffentlichung: 10. Oktober 2018

Neuerungen in 15.8.7

Azure DevOps

Visual Studio Team Services heißt jetzt Azure DevOps! Das neue Branding wird in Team Explorer und in Verweisen in Visual Studio angezeigt.

Sicherheitsempfehlungen

CVE-2018-8292 Sicherheitsrisiko bei der Veröffentlichung von Informationen in .NET Core


Release Notes IconVisual Studio 2017, Version 15.8.8

Veröffentlichung: 24. Oktober 2018

Wichtigste behobene Probleme in Version 15.8.8

In 15.8.8 wurden folgende von Kunden gemeldete Probleme behoben:


Release Notes IconVisual Studio 2017, Version 15.8.9

veröffentlicht am 2. November 2018

Wichtigste behobene Probleme in Version 15.8.9

In Version 15.8.9 wurden folgende von Kunden gemeldete Probleme behoben:


Bekannte Probleme

Sehen Sie sich alle vorhandenen bekannten Probleme und verfügbaren Problemumgehungen in Visual Studio 2017 Version 15.8 an.

Visual Studio 2017 Known Issues


Feedback und Vorschläge

Wir freuen uns auf Ihr Feedback! Informieren Sie uns über die Option Ein Problem melden in der oberen rechten Ecke im Installer oder direkt in der Visual Studio-IDE über mögliche Probleme. Das Report a Problem Icon befindet sich oben rechts. Sie können einen Vorschlag zu einem Produkt einreichen oder Ihre Probleme in der Entwicklercommunity für Visual Studio nachverfolgen, in der Sie auch Fragen stellen und nach Antworten suchen sowie neue Features vorschlagen können. Über unseren Livechatsupport erhalten Sie zudem kostenlose Hilfe bei der Installation.


Blogs

Profitieren Sie von den Einblicken und Empfehlungen auf der Webseite mit Blogs zu Entwicklertools, um sich bei allen Releases auf dem neuesten Stand zu halten und Zugang zu ausführlichen Beiträgen zu zahlreichen Funktionen zu erhalten.

Developer Tools Blogs


Visual Studio 2017: Verlauf der Anmerkungen zu dieser Version

Weitere Informationen bezüglich der früheren Versionen von Visual Studio 2017 finden Sie auf der Seite Visual Studio 2017: Verlauf der Versionsanmerkungen.


Seitenanfang