CMake, Linux-Targeting und IntelliSense-Verbesserungen in Visual Studio 2019 Version 16.5 Preview 2

CMake, Linux-Targeting und IntelliSense-Verbesserungen in Visual Studio 2019 Version 16.5 Preview 2

Die native Unterstützung von Visual Studio für CMake ermöglicht es Ihnen, Windows und Linux bequem von einer einzigen IDE aus anzusprechen. Visual Studio 2019 Version 16.5 Preview 2 führt mehrere neue Features ein, die spezifisch für die plattformübergreifende Entwicklung sind, darunter:

  • Dateikopieoptimierungen für CMake-Projekte, die auf ein Remote-Linux-System abzielen
  • Native WSL-Unterstützung beim Trennen Ihres Build-Systems von Ihrem Remote-Bereitstellungssystem
  • Die Möglichkeit, Dateien in CMake-Projekten einfach hinzuzufügen, zu entfernen und umzubenennen
  • CMake-Sprachdienste
  • Ein Befehlszeilendienstprogramm zur Interaktion mit dem Connection Manager
  • FIPS 140-2-Konformität für Remote-C++-Entwicklung
  • IntelliSense-Verbesserungen für CMake-Projekte und MSBuild-basierte Lösungen

Dateikopieoptimierungen für CMake-Projekte, die auf ein Remote-Linux-System abzielen

Visual Studio kopiert beim Erstellen und Debuggen unter Linux automatisch Quelldateien von Ihrem lokalen Windows-Computer auf Ihr Linux-Remotesystem. In Visual Studio 2019 Version 16.5 wurde dieses Verhalten optimiert. Visual Studio speichert jetzt eine „Fingerabdruckdatei“ der letzten remote kopierten Quellen und optimiert das Verhalten basierend auf der Anzahl der geänderten Dateien.

  1. Wenn keine Änderungen festgestellt werden, erfolgt keine Kopie.
  2. Wenn sich nur wenige Dateien geändert haben, wird sftp verwendet, um die Dateien einzeln zu kopieren.
  3. Wenn sich nur wenige Verzeichnisse geändert haben, wird ein nicht-rekursiver rsync-Befehl ausgegeben, um diese Verzeichnisse zu kopieren.
  4. Andernfalls wird eine rekursive rsync-Kopie aus dem ersten gemeinsamen Elternverzeichnis der geänderten Dateien aufgerufen.

Diese Verbesserungen wurden gegen LLVM getestet. An einer Quelldatei wurde eine triviale Änderung vorgenommen, die dazu führt, dass die Kopie der Remote-Quelldatei aufgerufen und die ausführbare Datei neu erstellt wird, wenn der Benutzer mit dem Debuggen beginnt.

Debugging von LLVM-objdump ohne Optimierungen Debugging von LLVM-objdump mit 16.5-Optimierungen 
Verstrichene Zeit für das Kopieren der Remote-Quelldatei 3 Minuten und 24 Sekunden 2 Sekunden

Ohne Optimierungen wird eine vollständige rekursive rsync-Kopie vom CMake-Stamm ausgeführt. Mit diesen Optimierungen erkennt Visual Studio, dass sich eine einzelne Datei geändert hat, und verwendet sftp, um nur die geänderte Datei erneut zu kopieren.

Diese Optimierungen sind standardmäßig aktiviert. Die folgenden neuen Optionen können zu CMakeSettings.json hinzugefügt werden, um das Dateikopierverhalten anzupassen.

“remoteCopyOptimizations” :{

“remoteCopyUseOptmizations”:“RsyncAndSftp”

“rsyncSingleDirectoryCommandArgs”:“-t”

}

Mögliche Werte für remoteCopyOptimizations sind RsyncAndSftp (Standard), RsyncOnly und None (wobei immer eine vollständige rekursive rsync-Kopie vom CMake-Stamm ausgeführt wird). rsyncSingleDirectoryCommandArgs können übergeben werden, um das rsync-Verhalten anzupassen, wenn ein nicht rekursiver rsync-Befehl ausgegeben wird (Schritt 3 oben). Die vorhandenen Eigenschaften remoteCopySources, rsyncCommandArgs (die übergeben werden, wenn ein rekursiver rsync-Befehl ausgegeben wird, Schritt 4 oben) und rsyncCopySourcesMethod können auch zum Anpassen des Dateikopierverhaltens verwendet werden. Weitere Informationen finden Sie unter Zusätzliche Einstellungen für CMake-Linux-Projekte.

Beachten Sie, dass diese Leistungsverbesserungen spezifisch für Remoteverbindungen sind. Die native Unterstützung von Visual Studio für WSL kann auf Dateien zugreifen, die im Windows-Dateisystem gespeichert sind, wodurch die Notwendigkeit entfällt, Quellen auf einem Remotecomputer zu kopieren und zu verwalten.

Native WSL-Unterstützung mit der Trennung von Build und Bereitstellung

In Visual Studio 2019 Version 16.1 wurde die Möglichkeit eingeführt, Ihr Remotebuildsystem von Ihrem Remotebereitstellungssystem zu trennen. In Visual Studio 2019 Version 16.5 wurde diese Funktionalität um unsere native Unterstützung für WSL erweitert. Jetzt können Sie nativ auf WSL aufbauen und auf einem zweiten Remote-Linux-System, das über SSH verbunden ist, bereitstellen/debuggen.

Trennung von Build und Deploy mit CMake-Projekten

Für den Build wird das im CMake Settings Editor angegebene Linux-System verwendet. Um nativ auf WSL aufzubauen, navigieren Sie zum CMake-Einstellungseditor (Dropdown-Menü Konfiguration> Konfigurationen verwalten…) und fügen Sie eine neue WSL-Konfiguration hinzu. Sie können entweder WSL-GCC-Debug auswählen oder WSL-Clang-Debug je nachdem, welches Toolset Sie verwenden möchten.

Das in launch.vs.json angegebene Remote-Linux-System wird zum Debuggen verwendet. Fügen Sie zum Debuggen auf einem zweiten Remote-Linux-System eine neue Remote-Linux-Konfiguration zu launch.vs.json hinzu (klicken Sie mit der rechten Maustaste auf die Stammdatei CMakeLists.txt im Projektmappen-Explorer> Debug- und Starteinstellungen) und wählen Sie C/C++ Attach aus für Linux (gdb). Bitte lesen Sie die launch.vs.json-Referenz für Remote-Linux-Projekte, um mehr über das Anpassen dieser Konfiguration und Eigenschaften zu erfahren, die für die Trennung von Build und Bereitstellung spezifisch sind.

Beachten Sie, dass die C/C++ Attach for Linux (gdb)-Konfiguration zum Debuggen auf Remote-Linux-Systemen dient. Wenn Sie auf derselben Instanz von WSL bauen und debuggen möchten, fügen Sie einen C/C++-Start für WSL hinzu Konfiguration zu launch.vs.json. Weitere Informationen zu den Einstiegspunkten für launch.vs.json finden Sie hier.

Trennung von Build und Bereitstellung mit MSBuild-basierten Linux-Projekten

Für den Build wird das in den Linux-Eigenschaftenseiten angegebene Linux-System verwendet. Um nativ auf WSL zu bauen, navigieren Sie zu Konfigurationseigenschaften> Allgemein und legen Sie das Plattform-Toolset fest . Sie können entweder GCC für Windows-Subsystem für Linux auswählen oder Clang für Windows-Subsystem für Linux je nachdem, welches Toolset Sie verwenden möchten. Klicken Sie auf „Anwenden.“

Standardmäßig erstellt und debuggt Visual Studio in WSL. Um ein zweites Remote-System zum Debuggen anzugeben, navigieren Sie zu Konfigurationseigenschaften> Debuggen und legen Sie Remote Debug Machine fest zu einer der angegebenen Remote-Verbindungen. Über den Connection Manager können Sie eine neue Remote-Verbindung hinzufügen. Sie können über Remote Deploy Directory auch einen Pfad zu dem Verzeichnis auf dem Remote-System angeben, in dem das Projekt bereitgestellt werden soll .

Dateien in CMake-Projekten einfach hinzufügen, entfernen und umbenennen

Es ist einfacher denn je, mit CMake-Projekten in Visual Studio zu arbeiten. In der neuesten Vorschau können Sie Quelldateien und Ziele in Ihren CMake-Projekten aus der IDE hinzufügen, entfernen und umbenennen, ohne Ihre CMake-Skripte manuell zu bearbeiten. Wenn Sie Dateien mit dem Projektmappen-Explorer hinzufügen oder entfernen, bearbeitet Visual Studio automatisch Ihr CMake-Projekt. Sie können die Ziele des Projekts auch in der Zielansicht des Projektmappen-Explorers hinzufügen, entfernen und umbenennen.

In einigen Fällen kann es mehr als eine Stelle geben, an der es sinnvoll ist, eine Quelldatei zu einem CMake-Skript hinzuzufügen. In diesem Fall fragt Visual Studio Sie, wo Sie die Änderung vornehmen möchten, und zeigt eine Vorschau der vorgeschlagenen Änderungen an:

Diese Funktion ist ab Visual Studio 2019 15.5 Preview 2 standardmäßig aktiviert, kann aber unter Extras> Optionen> CMake, „Automatische CMake-Skriptänderung aktivieren…“ deaktiviert werden.

CMake-Sprachdienste

Die neueste Visual Studio-Vorschau macht es auch einfach, komplexe CMake-Projekte zu verstehen. Code-Navigationsfunktionen wie „Gehe zu Definition“ und „Alle Verweise suchen“ werden jetzt für Variablen, Funktionen und Ziele in CMake-Skriptdateien unterstützt.

Diese Navigationsfunktionen funktionieren in Ihrem gesamten CMake-Projekt, um mehr Produktivität zu bieten als die naive Textsuche über Dateien und Ordner hinweg, und sind in andere IDE-Produktivitätsfunktionen wie Peek Definition integriert. Bleiben Sie dran, um weitere Informationen zu beiden CMake-Funktionen in eigenständigen Blogbeiträgen zu erhalten, die bald erscheinen werden.

Befehlszeilendienstprogramm zur Interaktion mit dem Connection Manager

In Visual Studio 2019 Version 16.5 oder höher können Sie ein Befehlszeilendienstprogramm verwenden, um Remoteverbindungen programmgesteuert zum Verbindungsspeicher hinzuzufügen und daraus zu entfernen. Dies ist nützlich für Aufgaben wie das Bereitstellen eines neuen Entwicklungscomputers oder das Einrichten von Visual Studio in Continuous Integration. Die vollständige Dokumentation des Dienstprogramms, einschließlich Verwendung, Befehle und Optionen, finden Sie hier.

FIPS 140-2-Konformität für Remote-C++-Entwicklung

Die Veröffentlichung 140-2 des Federal Information Processing Standard (FIPS) ist ein Standard der US-Regierung für kryptografische Modelle. Implementierungen des Standards werden von NIST validiert. Ab Visual Studio Version 16.5 ist die Linux-Remoteentwicklung mit C++ FIPS 140-2-kompatibel. Sie können unseren Schritt-für-Schritt-Anleitungen folgen, um eine sichere, FIPS-kompatible Verbindung zwischen Visual Studio und Ihrem Remote-Linux-System einzurichten.

IntelliSense-Verbesserungen 

IntelliSense zeigt jetzt besser lesbare Typnamen an, wenn es um die Standardbibliothek geht. Beispielsweise wird im Quickinfo-Tooltip std::_vector_iterator zu_std::vector::iterator.

Wir haben auch die Möglichkeit hinzugefügt, umzuschalten, ob Enter, Space und Tab als Commit-Zeichen fungieren, und um umzuschalten, ob Tab zum Einfügen von Snippets verwendet wird. Unabhängig davon, ob Sie ein CMake- oder MSBuild-Projekt verwenden, finden Sie diese Einstellungen unter Extras> Optionen> Texteditor> C/C++> Erweitert> IntelliSense.

Gib uns dein Feedback

Laden Sie noch heute Visual Studio 2019 Version 16.5 Preview 2 herunter und probieren Sie es aus. Wir würden uns freuen, von Ihnen zu hören, um uns dabei zu helfen, die richtigen Funktionen für Sie zu priorisieren und zu entwickeln. Sie können uns über die Kommentare unten, die Entwickler-Community, E-Mail ([email protected]) und Twitter (@VisualC) erreichen. Der beste Weg, einen Fehler zu melden oder eine Funktion vorzuschlagen, ist über die Entwickler-Community.