Freigeben über


Erweiterungen und Ökosystemunterstützung

Eines der Hauptziele von Visual Studio Live Share ist es, Entwicklern die Zusammenarbeit zu ermöglichen, und zwar bequem von ihren bevorzugten und hochgradig angepassten Tools aus. Auf diese Weise können Ad-hoc-Interaktionen häufig stattfinden, während sie visuell vertraut und ergonomisch bleiben, unabhängig davon, woran Sie gerade mit den anderen arbeiten. Um dies zu erreichen, ist es wichtig, dass die Teilnehmenden einer Zusammenarbeitssitzung weiterhin Erweiterungen verwenden können, die ihre Vorlieben und bevorzugte Workflows unterstützen (z. B. Farb-/Symboldesigns, Keybindungen, Editor-Produktivitätserweiterungen).

Damit die Teilnahme an einer Zusammenarbeitssitzung so schnell wie möglich gestartet werden kann und gleichzeitig hochproduktiv ist, ist es das Ziel von Visual Studio Live Share, Gästen die automatische Nutzung der projektspezifischen Tools zu ermöglichen, die ihr Host freigegeben hat. Auf diese Weise können Sie einfach auf einen Link klicken, das Tool Ihrer Wahl starten und mit der Zusammenarbeit beginnen, ohne dass eine zusätzliche Einrichtung erforderlich ist. Um dieses Ziel zu erreichen, ist es wichtig, dass Erweiterungen, die den zentralen Bearbeitungs-, Build- und Debugworkflow ermöglichen, transparent vom Host zum Gast „ferngesteuert“ werden, sodass Aufgaben wie automatische Vervollständigung, Go-to-Definition und Fehlerbehebung „einfach funktionieren“.

Dieses Dokument behandelt den aktuellen bekannten Zustand für das riesige Erweiterungsökosystem sowie eine „Scorecard“ für die oben genannten Ziele. Wenn Sie auf eine Erweiterung stoßen, die diese Kriterien nicht erfüllt, für Ihren persönlichen Workflow jedoch wichtig ist, teilen Sie uns dies bitte mit!

Benutzerspezifische Erweiterungen

Erweiterungen, die benutzerspezifische Anpassungen unterstützen, müssen für den Host und sollten für alle Gäste funktionieren. Wenn eine Erweiterung für den Host nicht ordnungsgemäß funktioniert, wäre dies eine Regression und ist wahrscheinlich ein Fehler in Visual Studio Live Share (bitte registrieren Sie ein Problem, wenn eines angezeigt wird!). Wenn sich eine Erweiterung nicht wie erwartet für einen Gast verhält, kann es Änderungen an der Erweiterung selbst erfordern, und wir arbeiten mit dem Ökosystem zusammen, um diese Szenarien zu beheben/zu verbessern.

Visual Studio Code

Kategorie Beispiel(e) Mit Gastunterstützung? Für die Zusammenarbeit geeignet?
Farbdesigns One Dark Pro, Output Colorizer, Rainbow String, Colored Regions, Indented Block Highlighting, Todo Highlight, Bracket Pair Colorizer N/V
Symbolsets vscode-icons, Visual Studio Classic Icons N/V
Schlüsselbindungen Vim, IntelliJ IDEA Keybindings, Emacs Friendly Keymap N/V
Codeausschnitte Rechteckige v5-Snippets, HTML-Snippets, SVG-Symbole, Dateiheader N/A 1
Organisation Synchronisierung der Einstellungen, Project Manager, Timeit, Checkpoints, TODO Parser, Favoriten (❌), Lesezeichen (❌) 2 N/A 3
Produktivität GitLens, Auto-Rename Tag, Code Outline, Color Highlight, Increment Selection, Bracketeer, Image Preview, JSON Helper (Hover), Color Picker, Copy Word in Cursor, CodeMetrics (CodeLens), Git Co-Authors, JavaScript Booster (CodeActions), Turbo Console Log, Goto Next/Previous Member, Auto-scroll, NPM Import Version (❌), Import Cost (❌) 2 3
REPLs REST Client, Code Runner, Quokka.js, R 4 3
Ressourcen-Manager mssql, ftp-simple, Azure Functions, Docker, Brew Services 5 3

1 Wenn ein Benutzer mit einem Codeausschnitt noch nicht vertraut ist, erwartet er nicht, dass dieser verfügbar ist, und daher ist es nicht unbedingt sinnvoll, den Codeausschnitt zu teilen.

2 Diese Erweiterungskategorien sind so vielfältig, dass es unmöglich ist, zu sagen, dass sie alle funktionieren. Theoretisch sollten sie es aber, und wir werden die wichtigsten, die es nicht tun, nachverfolgen.

3 Diese Erweiterungskategorien können von der Zusammenarbeit profitieren, weshalb wir entsprechendes Feedback von den Endbenutzern sehr begrüßen!

4 Diese erfordern, dass der Gast die Laufzeittools (z. B. Node.js) installiert hat, und funktionieren durch die lokale Ausführung von Code.

5 Diese funktionieren durch Herstellen einer Verbindung mit einem beliebigen Server und können entweder mit zentralen Servern oder vom Gast freigegebenen Servern funktionieren.

Projektspezifische Erweiterungen

Vom Host installierte Erweiterungen, die die Kernbearbeitung, Erstellung und Debugging einer Anwendung unterstützen und spezifisch für eine Sprache/Plattform/Bibliothek/SDK sind, sollten automatisch für Gäste verfügbar sein, ohne dass sie etwas installieren müssen. Auf diese Weise können Hosts ihre Umgebung einrichten, um die produktive Entwicklung eines Projekts zu unterstützen, und ihren Gästen die sofortige Teilnahme zu ermöglichen, ohne jegliche zusätzliche Voraussetzungen. Da projektspezifische Erweiterungen nicht subjektiv oder persönlich sind, können sie von Host zu Gast deterministisch geteilt werden, ohne die vertraute Umgebung eines Benutzers zu beeinträchtigen.

Um projektspezifische Erweiterungen zu unterstützen, die ein Gast installiert hat, der Gastgeber jedoch nicht, sollten sie idealerweise eine eingeschränkte, aber funktionsfähige Erfahrung bieten (z. B. Intellisense in einer einzelnen Datei, die Möglichkeit, ein Dokument zu formatieren).

Kategorie Beispiel(e) Freigegeben? Mit Gastunterstützung?
Grammatiken/ Syntaxmarkierung Fish Shell, Nginx, Vetur, DotEnv, ES6 String HTML, Todo+, Rainbow CSV
Sprachdienste YAML, Path Intellisense, ARM 1 2
JSON-Schemas Azure-Funktionen
Linter ESLint, Markdownlint, Code Spell Checker, PHPCS 2
Formatierer Prettier, Beautify 2
Debugger Python, Debugger für Chrome 3 4
Test Runner Java Test Runner, Mocha Sidebar, Jest Runner, Neptune 5 2
Benutzerdefinierte Dateivorschauprogramme SVG Preview, GraphViz, Markdown Image Size
Datei-/Projektgeneratoren Azure Functions, C/C++ Project Generator 6
Quellcodeverwaltungsanbieter SVN, Hg

1 Derzeit nur C# und JavaScript/TypeScript.

2 Würde nur das aktuelle aktive Dokument unterstützen, da Gäste keinen lokalen Dateizugriff haben.

3 Die Kerndebugging-Erfahrung wird freigegeben, jedoch werden alle gestarteten Server nicht automatisch weitergeleitet.

4 Gäste verfügen nicht über eine lokale Kopie der App, daher müssen die ausgeführte App und alle Debugsitzungen auf dem Hostcomputer gestartet werden.

5 Die Ausgabe einer Testausführung würde erfordern, dass alle resultierenden Terminals, Ausgabebereiche und Fehler auch für Gäste freigegeben wurden.

6 Fast alle würden das Node.js fs Modul direkt zum Erstellen von Dateien verwenden, was nicht funktionieren würde.

Bekannte Probleme

Im Folgenden sind derzeit bekannte Erweiterungsprobleme aufgeführt, die verhindern können, dass die Erweiterungen im Kontext einer Zusammenarbeitssitzung (zusammen mit ihren Problemumgehungen) für Gäste funktionieren, was sich auf ihren Workflow auswirken kann:

Visual Studio Code

Problem Ursache Problemumgehung
Verwenden des Node.js fs Moduls zum Erkennen/Lesen von Dateien (z. B. einer Konfigurationsdatei) oder Enumerieren von Verzeichnissen (und Sie sind kein Sprachdienst). Gäste haben keinen lokalen Dateizugriff. 1. Verringern Sie ordnungsgemäß die Benutzerfreundlichkeit (sofern möglich).

2. Verwenden Sie die Arbeitsbereichs-APIs openTextDocument und findFiles zum Lesen und Aufzählen von Dateien.
Verwenden des Moduls Node.js fs zum Erstellen oder Schreiben von Dateien Wie oben N/A Sie können die openTextDocument(Uri)-API verwenden, um eine untitled-Datei zu erstellen, aber Sie können sie nicht direkt im Dateisystem unter einem bestimmten Pfad speichern.
Abhängig von einer projektbündelten Bibliothek oder einem Projekttool Wie oben 1. Bündeln einer Fallbackversion der Abhängigkeit mit der Erweiterung

2. Unterstützen Sie die globale Installation, um Gäste zu entsperren, wenn sie dies explizit installieren möchten.

3. Steuern Sie den Zustand/die Aktion fern, wenn möglich, da der Host die richtigen Abhängigkeiten verfügbar hätte.
Verwenden des Node.js fs Moduls zum Erstellen eines Verzeichnisses Wie oben N/V
Einschränken der Funktionalität auf Dokumente, die das file-Schema verwenden. Dateien auf der Gastseite verwenden das vsls-Schema. Hinzufügen von Unterstützung für vsls-Dokumente (Beispiel)
Verwenden der Uri.file-Methode und/oder Uri.fsPath/TextDocument.fileName-Member zum Serialisieren/Analysieren von URIs Wie oben Verwenden von Uri.parse und Url.toString() stattdessen, die Dateischemas verwalten und respektieren (Beispiel)
Verwenden der workspace.openTextDocument-Methode mit einem Dateipfad anstelle eines Uri Wie oben Bereitstellen einer Uri-Instanz anstelle einer unformatierten Dateipfadzeichenfolge (Beispiel)
Verwenden der workspace.rootPath-Eigenschaft zum Erkennen des Vorhandenseins eines Arbeitsbereichs Die workspace.rootPath-Eigenschaft ruft Uri.fsPath des ersten workspaceFolder im workspace, die das gleiche Problem, wie oben erwähnt, aufweist. Verwenden Sie die workspace.workspaceFolders-Eigenschaft, um stattdessen das Vorhandensein eines Arbeitsbereichs zu erkennen, und sehen Sie sich bei Bedarf die einzelnenworkspaceFolder Uri.scheme, um festzustellen, ob er lokal ist oder nicht.
Angeben eines Dokumentschemas beim Registrieren von Sprachdiensten (entweder über die Methode LanguageClientoder languages.register*) Gäste erhalten die Ergebnisse des Sprachdiensts sowohl von ihren lokalen Erweiterungen als auch vom Host. Wenn beide Teilnehmer die gleiche Sprachdiensterweiterung installiert haben, sehen Gäste doppelte Einträge für bestimmte Aktionen (z. B. Autovervollständigen, Codeaktionen) Beschränken der Sprachdienste nur auf die Schemas file und untitled (Beispiel)
Das Überprüfen eines Dokuments Uri.schemevor dem dem Auffüllen eines DiagnosticCollection dafür Wie oben Generieren Sie nur Diagnostics für documents, dessen Uri.scheme === file (Beispiel)
Es wird beim Zurückgeben von Tasks aus einem benutzerdefinierten TaskProvider nicht auf das Arbeitsbereichsschema überprüft Gäste zeigen alle Remote- und lokalen Aufgaben an und würden daher Duplikate sehen, wenn beide Teilnehmer dieselbe Erweiterung installiert hatten. Geben Sie nur Tasks für WorkspaceFolder, dessen Uri.scheme === file (Beispiel)

Siehe auch

Gibt es Probleme? Lesen Sie Troubleshooting oder Feedback geben.