Remote Development mit VS Code
2. Mai 2019 von Das VS Code Team, @code
Zusammenfassung
Heute freuen wir uns, die Vorschau von drei neuen Erweiterungen für Visual Studio Code anzukündigen, die eine nahtlose Entwicklung in Containern, remote auf physischen oder virtuellen Maschinen und mit dem Windows-Subsystem für Linux (WSL) ermöglichen. Sie können sofort loslegen, indem Sie das Remote Development Extension Pack installieren.
Hinweis: Derzeit benötigen Sie die Insiders-Version, aber die Unterstützung für die Remote-Entwicklung wird schließlich auch in der stabilen Version verfügbar sein.
Lesen Sie weiter, um zu erfahren, wie wir hierher gekommen sind.
Entwicklungstrends
Mit der wachsenden Beliebtheit von VS Code hatten wir das Privileg und die Gelegenheit, mit immer mehr Benutzern mit unterschiedlichen Entwicklungsumgebungen zu sprechen, von denen viele sich stark von unseren eigenen unterscheiden, um Wege zu identifizieren, wie wir VS Code weiterentwickeln können, um echte Probleme von Entwicklern zu lösen.
Während dieser Gespräche zeigte sich ein interessantes Muster. Wir sahen viele Entwickler, die versuchten, VS Code für die Entwicklung gegen Container und Remote-VMs zu verwenden, die mit spezifischen Entwicklungs- und Laufzeitstacks konfiguriert waren, einfach weil es zu schwierig, zu störend und in einigen Fällen unmöglich ist, diese Entwicklungsumgebungen lokal einzurichten.
Wir alle haben dieses Problem erlebt. Es sei denn, wir sind der Meinung, dass es an der Zeit ist, diese Maschine zu "plätten" :), zögern wir, neue Stacks wie Rust, Go, Node oder Python3 auszuprobieren, aus Angst, unsere aktuelle, gut abgestimmte Umgebung "durcheinander zu bringen".
Python-Entwickler möchten zu VS Code wechseln, können es aber nicht, weil sie Container und virtuelle Maschinen als Entwicklungsumgebungen verwenden müssen, die für einen bestimmten Python-Stack konfiguriert sind.
Da die Codebasen so groß sind, sehen wir, wie Ingenieure bei Unternehmen wie Facebook (und Microsoft!) Editoren wie Vim verwenden, um remote auf sichere und leistungsstarke "Entwickler-VMs" zuzugreifen, und alternative Cloud-basierte Such- und Navigationsdienste nutzen, die über die Fähigkeiten selbst des besten Laptops hinausgehen.
Data Scientists, die Datenmodelle erstellen und trainieren, benötigen oft massive Speicher- und Rechenressourcen, um große Datensätze zu analysieren, die selbst auf einem robusten Desktop nicht gespeichert oder verarbeitet werden können.
Die zunehmende Beliebtheit des Windows-Subsystems für Linux (WSL) ist teilweise darauf zurückzuführen, dass es einfach ist, eine abgeschlossene Entwicklungsumgebung einzurichten, einschließlich des Zielbetriebssystems. Tatsächlich ist das drittmeist kommentierte Problem im VS Code-Repository die Unterstützung für die Ausführung von code von einem Bash-Terminal in einer Linux-Distribution unter Windows aus.
Herausforderungen bei aktuellen Lösungen
Während dieser Gespräche hörten wir auch immer wieder dieselben Herausforderungen, mit denen Entwickler bei dieser Art der Entwicklung konfrontiert sind.
-
Remote Desktop kann funktionieren, ist aber auf einigen Linux-Distributionen schwierig oder unmöglich einzurichten, und das Entwicklungserlebnis kann "verzögert" sein.
-
SSH und Vim (oder lokale Tools mit Dateisynchronisierung) funktionieren, sind aber langsam, fehleranfällig und machen im Allgemeinen die Produktivität moderner Entwicklungstools zunichte.
-
Browserbasierte Tools sind in verschiedenen Szenarien nützlich, aber Entwickler möchten nicht auf die Fülle und Vertrautheit moderner Desktop-Tools oder ihre bereits lokal installierten Toolchains verzichten.
Schlimmer noch (unserer Meinung nach!) mussten Entwickler auf Kernfunktionen von VS Code wie IntelliSense (Vervollständigungen), Linting und Debugging verzichten, um gegen diese Umgebungen zu arbeiten.
Ein anderer Ansatz
Als wir von diesen Herausforderungen hörten, begannen wir, uns mit der WSL-Unterstützung zu befassen, und es schien einfach genug. Installieren Sie VS Code und bearbeiten Sie (damals vorsichtig!) das Windows-Dateisystem wie gewohnt. Wir haben daran gearbeitet, Remote-Debugging für Node.js zu ermöglichen, und wir dachten, wir könnten einfach ein kleines Skript installieren, um den Start von code aus der Bash-Shell zu ermöglichen.
Aber das war einfach nicht richtig. Es ergab keinen Sinn, für jede Laufzeit gesonderte Arbeiten durchzuführen, wie wir es für das Node.js-Debugging getan haben. Wenn Sie Python 2.7 und Flask unter Windows installiert haben (oder gar nichts!) und Python 3.7 und Django in der Linux-Distribution installiert haben, erhalten Sie keine ordnungsgemäßen Vervollständigungen oder Linting, da VS Code die Windows-Versionen von allem betrachtet. Die Notwendigkeit, die Entwicklungsumgebung sowohl unter Windows als auch unter Linux zu duplizieren, widersprach dem Sinn von WSL.
Wir haben uns selbst davon überzeugt, dass wir eine Möglichkeit benötigten, VS Code an zwei Orten gleichzeitig auszuführen, die Entwicklertools lokal auszuführen und eine Verbindung zu einer Reihe von Entwicklungsdiensten herzustellen, die remote im Kontext einer physischen oder virtuellen Maschine (z. B. eines Containers oder einer VM) ausgeführt werden. Dies bietet Ihnen ein reichhaltiges lokales Entwicklungserlebnis im Kontext dessen, was in der Remote-Umgebung vorhanden ist.

Vorstellung der VS Code Remote Extensions
In den letzten Monaten haben wir hart daran gearbeitet, die Grenzen zwischen unseren Code-Schichten neu zu definieren und Annahmen über die lokale Entwicklungsumgebung zu beseitigen. Wir haben drei neue Erweiterungen für die Arbeit mit Remote-Workspaces entwickelt, die unter WSL, Docker-Containern oder auf physischen und virtuellen Maschinen über SSH ausgeführt werden.

Die WSL-Erweiterung ermöglicht es Ihnen, das Windows-Subsystem für Linux (WSL) direkt von VS Code aus als vollständige Entwicklungsumgebung zu nutzen. Diese neue, optimierte Unterstützung ermöglicht es Ihnen:
- Windows zur Entwicklung in einer Linux-basierten Umgebung zu nutzen und plattformspezifische Toolchains und Dienstprogramme zu verwenden.
- Dateien zu bearbeiten, die sich in WSL oder dem gemounteten Windows-Dateisystem befinden (z. B.
/mnt/c). - Ihre Linux-basierten Anwendungen unter Windows auszuführen und zu debuggen.
Befehle und Erweiterungen werden direkt in der Linux-Distribution ausgeführt, sodass Sie sich keine Gedanken über Pfadprobleme, Binärkompatibilität oder andere plattformübergreifende Herausforderungen machen müssen. Sie können VS Code in WSL genauso nutzen, wie Sie es von Windows aus tun würden.
Sehen Sie sich dieses schnelle 2-minütige Video an, um zu erfahren, wie einfach die Entwicklung in WSL ist.
Weitere Informationen finden Sie in der Dokumentation Entwicklung in WSL.
Die Remote - SSH-Erweiterung ermöglicht es Ihnen, Ordner oder Workspaces zu öffnen, die auf einem beliebigen Remote-Computer, einer VM oder einem Container mit einem laufenden SSH-Server gehostet werden. Die Entwicklung über SSH ermöglicht es Ihnen:
- Auf größerer, schnellerer oder spezialisierterer Hardware als Ihrem lokalen Rechner zu entwickeln.
- Schnell zwischen verschiedenen, Remote-Entwicklungsumgebungen zu wechseln und sicher Updates vorzunehmen, ohne sich Sorgen machen zu müssen, Ihren lokalen Rechner zu beeinträchtigen.
- Eine Anwendung zu debuggen, die irgendwo anders läuft, z. B. an einem Kundenstandort oder in der Cloud.
Nehmen wir zum Beispiel an, Sie arbeiten an einem Deep-Learning-Projekt. Sie benötigen typischerweise eine GPU-intensive virtuelle Maschine (wie eine Azure Data Science Virtual Machine), die mit allen Tools und Frameworks konfiguriert ist, die Sie zum Trainieren Ihrer Modelle mit großen Datensätzen benötigen.
Sie könnten Vim über SSH oder Jupyter Notebooks verwenden, um Ihren Remote-Code zu bearbeiten, aber Sie verzichten auf die Fülle Ihrer lokalen Entwicklungstools. Stattdessen verbinden Sie sich mit der Remote - SSH-Erweiterung einfach mit der VM, installieren die erforderlichen Erweiterungen wie Python und können dann alle großartigen Funktionen von VS Code wie IntelliSense (Vervollständigungen), Code-Navigation und Debugging nutzen, als ob Sie lokal arbeiten würden.
Sehen Sie sich dieses schnelle 2-minütige Video an, um zu erfahren, wie einfach die Entwicklung auf einer virtuellen Maschine über SSH ist.
Weitere Informationen finden Sie in der Dokumentation Entwicklung mit SSH.
Die Dev Containers-Erweiterung ermöglicht es Ihnen, einen Docker-Container als Ihre Entwicklungsumgebung zu verwenden. Container eignen sich hervorragend als Entwicklungsumgebungen, da
- Sie mit einer konsistenten und einfach reproduzierbaren Toolchain auf demselben Betriebssystem entwickeln können, auf das Sie bereitstellen.
- Container sind isoliert, was bedeutet, dass Sie schnell zwischen verschiedenen Entwicklungsumgebungen wechseln können, ohne Ihren lokalen Rechner zu beeinträchtigen.
- Es ist für andere einfach, zu Ihrem Projekt beizutragen, da sie in einer konsistenten Entwicklungsumgebung leicht entwickeln, erstellen und testen können.
Eine devcontainer.json-Datei kann verwendet werden, um VS Code mitzuteilen, wie der Entwicklungcontainer konfiguriert wird, einschließlich des zu verwendenden Dockerfile, zu öffnender Ports und im Container zu installierender Erweiterungen. Wenn VS Code eine devcontainer.json im Workspace findet, erstellt es automatisch (falls erforderlich) das Image, startet den Container und verbindet sich damit. Ihre Dateien werden in den Container gemountet, sodass Sie Dateien öffnen und mit voller IntelliSense (Vervollständigungen), Code-Navigation, Debugging und mehr mit der Bearbeitung beginnen können.
Sehen Sie sich dieses schnelle 2-minütige Video an, um Entwicklung Container in Aktion zu sehen.
Weitere Informationen zu Entwicklungcontainern finden Sie in der Dokumentation Entwicklung innerhalb eines Containers sowie in den vscode-remote-try-* Repositories, die Beispiele enthalten, die Sie noch heute verwenden können.
Verwaltung von Erweiterungen
Bei der Remote-Entwicklung versucht VS Code, basierend auf der von ihm bereitgestellten Funktionalität zu erraten, wo eine Erweiterung installiert werden soll, lokal oder remote. Erweiterungen fallen in eine von zwei Kategorien:
-
UI-Erweiterungen werden lokal installiert. Diese Erweiterungen passen nur die Benutzeroberfläche an und greifen nicht auf Dateien in einem Workspace zu, was bedeutet, dass sie vollständig auf dem lokalen Rechner ausgeführt werden können. Da sie lokal installiert sind, stehen sie Ihnen unabhängig vom Workspace, in dem Sie arbeiten, immer zur Verfügung. Beispiele für UI-Erweiterungen sind Themes, Snippets, Sprachgrammatiken und Tastenkombinationen.
-
Workspace-Erweiterungen werden remote installiert. Sie greifen auf Dateien und Ordner in einem Workspace zu, um IntelliSense (Vervollständigungen), GoTo Definition, Debugging und mehr bereitzustellen. Diese Erweiterungen können die Benutzeroberfläche anpassen. Diese Erweiterungen werden remote ausgeführt, damit sie vollen Zugriff auf das Dateisystem und die Tools auf dem Remote-Host haben.

Die meisten Erweiterungen wurden aktualisiert und funktionieren ordnungsgemäß in einer Remote-Umgebung. Wenn Sie jedoch auf einige stoßen, die dies nicht tun, reichen Sie bitte ein Problem für die Erweiterung ein.
Erweiterungsautoren
Wenn Sie VS Code-Erweiterungen erstellen, haben wir neue Erweiterungs-APIs implementiert, die Remote-fähig sind. Anstatt beispielsweise das open-Paket zu verwenden, um ein Browserfenster zu öffnen, sollte ein Erweiterungsautor die vscode.env.openExternal-API verwenden, die den Browser lokal öffnet. Ebenso gibt es eine neue clipboard-Klasse, die den Inhalt auf der lokalen Zwischenablage platziert, wie erwartet.
Viele weitere Details finden Sie in der aktualisierten API-Dokumentation, einschließlich Anleitungen zum Ausführen, Testen und Debuggen Ihrer Erweiterung in einer Remote-Umgebung.
Erste Schritte
Danke, dass Sie bis hierher gelesen haben!
Hier sind 3 schnelle Schritte, um mit der Remote-Entwicklung in Visual Studio Code zu beginnen:
-
Installieren Sie die Insiders-Version. Sie benötigen diese für die Remote-Entwicklung, bis sie in der stabilen Version verfügbar ist. Die Insiders-Version wird täglich mit den neuesten Funktionen und Fehlerbehebungen ausgeliefert. Wenn Sie Bedenken hinsichtlich der Stabilität haben, machen Sie sich keine Sorgen! Wir verwenden die Insiders-Versionen, um VS Code zu entwickeln, und sie kann parallel zur stabilen Version installiert werden, falls doch etwas kaputt geht (und lassen Sie es uns wissen).
-
Holen Sie sich das Remote Development Extension Pack, das Unterstützung für WSL, SSH und Container installiert und der einfachste Weg ist, loszulegen. Wenn Sie nicht alle benötigen, können Sie die einzelnen Erweiterungen deinstallieren.
-
Lesen Sie die Docs. Probieren Sie die Dev Container-Beispiele aus. Wenn Sie mit Python entwickeln (viele von Ihnen tun das!), lesen Sie Dan Taylors Blogbeitrag zur Remote-Python-Entwicklung.
Wenn Sie auf Probleme stoßen, reichen Sie bitte ein Issue ein. Antworten auf häufig gestellte Fragen finden Sie in unserem FAQ.
Lassen Sie uns wissen, was Sie denken!
Viel Spaß beim Programmieren,
Das @code-Team

