Prise en charge des extensions et de l’écosystème

l’un des principaux objectifs de Visual Studio Live Share consiste à permettre aux développeurs de collaborer entre eux, du confort de leurs outils préférés et des outils hautement personnalisés . Ainsi, les interactions ad hoc peuvent se produire fréquemment, tout en restant visuellement familière et ergonomique, quelle que soit votre aide. Pour ce faire, il est essentiel que les participants d’une session de collaboration puissent continuer à utiliser les extensions qui prennent en charge leurs préférences personnelles et leurs flux de travail (par exemple, les thèmes de couleur/d’icônes, les combinaisons de touches, les améliorations de la productivité de l’éditeur).

en outre, pour faire en sorte que l’action de rejoindre une session de collaboration soit aussi rapide que possible, tout en restant hautement productive, l’objectif de Visual Studio Live Share est de permettre aux invités d’exploiter automatiquement les outils spécifiques au projet que leur hôte a partagés. De cette façon, vous pouvez simplement cliquer sur un lien, lancer l’outil de votre choix et commencer à collaborer, sans aucune configuration supplémentaire. Pour ce faire, il est essentiel que les extensions, qui alimentent le flux de travail de modification, de génération et de débogagede base, soient « distantes » de manière transparente de l’hôte vers l’invité, afin que des opérations telles que la saisie semi-automatique, la mise en forme et le débogage fonctionnent « simplement ».

Ce document décrit l’état connu actuel de l’écosystème d’extension de grande taille, ainsi qu’un « Scorecard » pour les objectifs susmentionnés. Si vous rencontrez une extension qui ne répond pas à ces critères et qui est essentielle à votre flux de travail personnel, faites -le nous savoir !

Extensions de User-Specific

Les extensions qui prennent en charge les personnalisations spécifiques à l’utilisateur doivent fonctionner pour l’hôte et doivent fonctionner pour tous les invités. si une extension ne fonctionne pas correctement pour l’hôte, il s’agit d’une régression et est probablement un bogue dans Visual Studio Live Share (veuillez signaler un problème si vous en voyez un !). Si une extension ne se comporte pas comme prévu pour un invité, elle peut nécessiter des modifications dans l’extension elle-mêmeet nous travaillons avec l’écosystème pour traiter/améliorer ces scénarios.

Visual Studio Code

Category Exemple (s) Invité-pris en charge ? CCM?
Thèmes de couleur un Pro sombre, coloriseur de sortie, arc de chaîne arc-en-ciel, zones de couleur, mise en surbrillance des blocs en retrait, surlignage Todo, paire de crochets coloriseur N/A
Jeux d’icônes vscode-icônes, Visual Studio icônes classiques N/A
Combinaisons de touches Vim, IntelliJ IDEA KeyBindings, Emacs convivial configuration N/A
Extraits de code extraits de Angular v5, extraits de code HTML, icônes SVG, en-tête de fichier N/A1
Organisation Paramètres la synchronisation, le gestionnaire de Project, Timeit, les points de contrôle, l' analyseur TODO, les favoris ( ❌ ), les signets () ❌ 2 Non applicable3
Productivité GitLens, renommer automatiquement la balise, structure du code, mise en surbrillance des couleurs, incrémenter la sélection, Bracketeer, aperçu de l' image, application auxiliaire JSON (survol), sélecteur de couleurs, copier le mot dans le curseur, CodeMetrics (CodeLens), co-auteurs git, Booster JavaScript(CodeActions) , Journal de la console Turbo, aller aumembre suivant/précédent , Importez le coût ( ❌ ) 2 3
Loop Client Rest, Code Runner, Quokka.js, R 4 3
Gestionnaires de ressources mssql, ftp-simple, Azure Functions, ancrable, Services de brassage 5,5 3

1àmoins qu’un utilisateur ne soit déjà familiarisé avec un extrait de code, il ne s’attendait pas à ce qu’il soit disponible et, par conséquent, les rendre partagés n’ont pas nécessairement de sens.

2ces catégories d’extension sont tellement diversifiées qu’il est impossible de les faire fonctionner. Toutefois, en théorie, elles doivent être suivies de celles qui ne le font pas.

3ces catégories d’extension peuvent tirer parti de l’expérience collaborative et nous avons donc besoin de commentaires de la part de l’utilisateur final pour le savoir !

4ceux-ci requièrent que les outils d’exécution soient installés sur l’invité (par exemple, Node.js) et qu’ils fonctionnent en exécutant du code localement.

5ceux-ci fonctionnent en se connectant à un serveur de quelque sorte et peuvent fonctionner avec des serveurs centralisés, des serveurs que l’invité a partagés.

Visual Studio

Prochainement disponible.

Extensions de Project-Specific

Les extensions installées sur l’ordinateur hôte, qui prennent en charge l’édition principale, la génération et le débogage d’une application, et sont spécifiques à une langue/plateforme/bibliothèque/SDK, doivent être automatiquement disponibles pour les invités, sans qu’il soit nécessaire d’installer quoi que ce soit. De cette façon, les hôtes peuvent configurer leur environnement pour prendre en charge le développement productif d’un projet et autoriser leurs invités à les joindre instantanément, sans nécessiter d’autres conditions préalables. Étant donné que les extensions spécifiques à un projet ne sont pas subjectives ou personnelles, elles peuvent être partagées de manière déterministe d’un hôte à l’autre, sans impact sur l’environnement familier de tout le monde.

En outre, pour prendre en charge les extensions spécifiques au projet qu’un invité a installé, mais pas l’hôte, il est préférable de fournir une expérience dégradée, mais fonctionnelle (par exemple, l’obtention d’un fichier unique IntelliSense, la possibilité de mettre en forme un document).

Category Exemple (s) Partagé? Invité-pris en charge ?
Grammaires/mise en surbrillance syntaxique Shell de poisson, Nginx, vetur, DotEnv, ES6 de chaîne HTML, TODO +, arc-CSV
Services de langage YAML, chemin d’accès IntelliSense, ARM 1 2
Schémas JSON Azure Functions
Linters ESLint, Markdownlint, vérificateur orthographique de code, PHPCS 2
Formateurs Améliorer, Beautify 2
Débogueurs Python, débogueur pour Chrome 3 4
Test Runners Java Test Runner, Mocha Sidebar, poster un Runner, jest Runner, Neptune 5,5 2
Générateurs d’aperçu de fichier personnalisés SVG Preview, graphviz, taille de l’image de la démarque
générateurs de fichiers/Project Azure Functions, C/C++ Project Generator 6,3
Fournisseurs de contrôle de code source Svn, Hg

1uniquement C# et JavaScript/dactylographié, avec davantage de support.

2neprend en charge que le document actif actuel, puisque les invités n’ont pas d’accès aux fichiers locaux.

3l’expérience de débogage principale est partagée, toutefois, tous les serveurs lancés ne sont pas transférés automatiquement.

4lesinvités ne disposent pas d’une copie locale de l’application et, par conséquent, l’application en cours d’exécution et toutes les sessions de débogage doivent démarrer sur la machine de l’ordinateur hôte.

5la sortie d’une série de tests nécessiterait que tous les terminaux, les volets de sortie et les erreurs qui en résultent étaient également partagés avec les invités.

6la plupart de ces opérations utilisent le module Node.js fs directement pour créer des fichiers, ce qui ne fonctionnerait pas.

Visual Studio

Prochainement disponible.

Problèmes connus

Les éléments suivants sont actuellement des problèmes d’extension connus, qui peuvent les empêcher de fonctionner pour les invités dans le contexte d’une session de collaboration (avec leurs solutions de contournement) et, par conséquent, peuvent avoir un impact sur leur flux de travail :

Visual Studio Code

Problème Motif Solution de contournement
Utilisation du module Node.js fs pour détecter/lire des fichiers (par exemple, un fichier de configuration) ou pour énumérer des répertoires (et vous n’êtes pas un service de langage). Les invités n’ont pas d’accès aux fichiers locaux. 1. dégradation harmonieuse de l’expérience utilisateur (si possible).

2. Utilisez les API de l' openTextDocument espace de travail et findFiles pour lire et énumérer des fichiers.
Utilisation du module Node.js fs pour créer ou écrire des fichiers Identique à ce qui précède non applicable Vous pouvez utiliser l' openTextDocument(Uri) API pour créer un untitled fichier, mais vous ne pouvez pas l’enregistrer directement dans le système de fichiers, à un chemin d’accès spécifique.
En fonction d’une bibliothèque ou d’un outil de regroupement de projets Identique à ce qui précède 1. regrouper une version de secours de la dépendance avec l’extension

2. Prenez en charge l’installation globale pour débloquer des invités s’ils choisissent de l’installer explicitement.

3. l’État et l’action distants, si possible, puisque l’hôte a les dépendances appropriées disponibles.
Utilisation du module Node.js fs pour créer un répertoire Identique à ce qui précède N/A
Restriction des fonctionnalités aux documents qui utilisent le file schéma. Les fichiers sur le côté de l’invité utilisent le vsls schéma. Ajouter la prise en charge des vsls documents (exemple)
Utilisation de la Uri.file méthode et/ou Uri.fsPath/TextDocument.fileName des membres pour sérialiser/analyser des URI Identique à ce qui précède Utilisez Uri.parse plutôt, qui maintiennent et respectent les schémas de fichiers (exempleUrl.toString() )
Utilisation de la workspace.openTextDocument méthode avec un chemin d’accès au lieu d’un Uri Identique à ce qui précède Fournir une Uri instance au lieu d’une chaîne de chemin d’accès de fichier brut (exemple)
Utilisation de la workspace.rootPath propriété pour détecter la présence d’un espace de travail La workspace.rootPath propriété appelle Uri.fsPath sur le premier workspaceFolder dans le workspace , qui a le même problème mentionné ci-dessus. Utilisez la workspace.workspaceFolders propriété pour détecter la présence d’un espace de travail à la place et, si nécessaire, examiner chaque workspaceFolderUri.scheme pour déterminer s’il est local ou non
Non-spécification d’un modèle de document lors de l’inscription des services de langage (par le biais d’une LanguageClient ou des languages.register* méthodes) Les invités reçoivent les résultats du service de langage à partir de leurs extensions locales, et de l’hôte, et par conséquent, si les deux participants ont la même extension de service de langage installée, les invités verront les entrées en double pour certains éléments (par exemple, saisie semi-automatique, actions de code) Restreindre les services de langage aux schémas et untitled uniquement file (exemple)
Ne pas vérifier le d' Uri.scheme un document avant de le remplir DiagnosticCollection Identique à ce qui précède Générer Diagnostics uniquement pour documents dont Uri.scheme === file (exemple)
Absence de vérification du schéma de l’espace de travail lors du retour Tasks d’un personnalisé TaskProvider Les invités affichent toutes les tâches locales et distantes et, par conséquent, affichent les doublons si les deux participants avaient la même extension installée Retourner Tasks uniquement pour les WorkspaceFolder s dont fileUri.scheme === (exemple)

Visual Studio

Prochainement disponible.

Voir aussi

Vous rencontrez des problèmes ? Voir la section dépannage ou fournir des commentaires.