Prise en charge de l’écosystème et des extensionsExtensions and Ecosystem Support

Un des principaux objectifs de partage en direct de Visual Studio est de permettre aux développeurs de collaborer avec d’autres, depuis le confort de leurs favoris, et hautement personnalisée outils.One of the primary goals of Visual Studio Live Share is to enable developers to collaborate with each other, from the comfort of their favorite, and highly-customized tools. De cette façon, les interactions ad-hoc peuvent se produire fréquemment, tout en restant visuellement familières et ergonomique, quel que soit ce que vous vous aidez avec.This way, ad-hoc interactions can occur frequently, while remaining visually familiar and ergonomic, regardless what you're helping with. Pour ce faire, il est essentiel que les participants au sein d’une session de collaboration sont en mesure de continuer à utiliser toutes les extensions qui prennent en charge leurs préférences personnelles et des flux de travail (par exemple, les thèmes de couleur/icônes, combinaisons de touches, éditeur améliorateurs de productivité).To achieve this, it's critical that participants within a collaboration session are able to continue using any extensions which support their personal preferences and workflows (e.g. color/icons themes, key bindings, editor productivity enhancers).

En outre, pour rendre le fait de rejoindre une session de collaboration en tant qu’instant que possible, tout en restant hautement productifs, l’objectif de partage en direct de Visual Studio consiste à activer invités automatiquement exploiter les outils spécifiques au projet que leur hôte a partagé.Additionally, to make the act of joining a collaboration session as instant as possible, while remaining highly-productive, the goal of Visual Studio Live Share is to enable guests to automatically leverage the project-specific tooling their host has shared. De cette façon, vous pouvez simplement cliquer sur un lien, lancez l’outil de votre choix et démarrer la collaboration, sans configuration supplémentaire.This way, you can simply click a link, launch your tool of choice, and begin collaborating, without any extra setup. Pour ce faire, il est essentiel qu’extensions, qui le cœur de l’alimentation modifier, générer et déboguer des flux de travail, sont en toute transparence » exécutée à distance » de l’hôte vers l’invité, afin que les éléments tels que la saisie semi-automatique, atteindre la définition et le débogage » fonctionne tout simplement ».To achieve this, it is critical that extensions, which power the core edit, build and debug workflow, are transparently "remoted" from the host to the guest, so that things like auto-completion, go-to-definition, and debugging "just work".

Ce document couvre actuel connu d’état pour l’écosystème de grande extension, ainsi qu’un « tableau de bord » pour les objectifs mentionnés ci-dessus.This document covers the current known state for the vast extension ecosystem, as well as a "scorecard" for the aforementioned goals. Si vous rencontrez une extension qui ne répondent pas à ces critères et est essentiel de votre flux de travail personnel, veuillez vous Donnez-nous votre avis !If you encounter an extension that doesn't meet this criteria, and is critical to your personal workflow, then please let us know!

Extensions spécifiques à l’utilisateurUser-Specific Extensions

Les extensions qui prennent en charge les personnalisations spécifiques à l’utilisateur doit Professionnel pour l’hôte, et doit fonctionnent pour tous les invités.Extensions that support user-specific customizations must work for the host, and should work for all guests. Si une extension ne fonctionne pas correctement pour l’hôte, qui serait une régression et est probablement un bogue dans le partage en direct de Visual Studio (Veuillez signaler un problème si vous voyez une !).If an extension doesn't work properly for the host, that would be a regression, and is likely a bug in Visual Studio Live Share (please file an issue if you see one!). Si une extension ne se comporte pas comme prévu pour un invité, il faudra peut-être modifications dans l’extension elle-même, et nous allons utiliser l’écosystème d’adresse/améliorer ces scénarios.If an extension doesn't behave as expected for a guest, it may require changes in the extension itself, and we'll work with the ecosystem to address/improve these scenarios.

Visual Studio CodeVisual Studio Code

CategoryCategory Exemple (s)Example(s) Invité-pris en charge ?Guest-Supported? Collaboration ?Collaborative?
Thèmes de couleursColor Themes Un Pro foncé, sortie Coloriseur, arc-en-ciel chaîne, coloré régions, mis en retrait de bloc de mise en surbrillance, Mise en surbrillance TODO, Coloriseur de paire de crochetOne Dark Pro, Output Colorizer, Rainbow String, Colored Regions, Indented Block Highlighting, Todo Highlight, Bracket Pair Colorizer N/AN/A
Jeux d’icônesIcon Sets icônes de vscode, icônes de classique Visual Studiovscode-icons, Visual Studio Classic Icons N/AN/A
Combinaisons de touchesKey bindings VIM, IntelliJ IDEA Keybindings, Emacs convivial KeymapVim, IntelliJ IDEA Keybindings, Emacs Friendly Keymap N/AN/A
Extraits de codeSnippets Extraits de code Angular v5, extraits HTML, SVG icônes, en-tête de fichierAngular v5 Snippets, HTML Snippets, SVG Icons, File Header N/A 1N/A 1
OrganisationOrganization Synchronisation des paramètres, responsable de projet, spécifiqueIl, points de contrôle, TODO analyseur, favoris (❌), signets (❌)Settings Sync, Project Manager, Timeit, Checkpoints, TODO Parser, Favorites (❌), Bookmarks (❌) 22 N/A 3N/A 3
ProductivitéProductivity GitLens, renommer automatiquement balise, Code hiérarchique, couleur de surbrillance, incrémenter sélection, Bracketeer, aperçu de l’Image, JSON Helper (pointez), sélecteur de couleurs, copier Word dans le curseur, CodeMetrics (CodeLens), co-auteurs Git, JavaScript Booster (CodeActions), journal de la Console de Turbo, Membre suivant/précédent de GoTo, défilement automatique, NPM importation Version (❌), importer coû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 (❌) 22 33
REPLsREPLs Client REST, Code Runner, Quokka.js, RREST Client, Code Runner, Quokka.js, R 44 33
Gestionnaires de ressourcesResource Managers MSSQL, ftp simple, Azure Functions, Docker, Brew de Servicesmssql, ftp-simple, Azure Functions, Docker, Brew Services 55 33

1 , sauf si un utilisateur a été déjà familiarisé avec un extrait de code, qu’elles n’attendent qu’elle soit disponible, et par conséquent, ce qui les rend partagé n’est pas forcément judicieux.1 Unless a user was already familiar with a snippet, they wouldn't expect it to be available, and therefore, making them shared doesn't necessarily make sense.

2 ces catégories d’extension sont donc diverses, qu’il est impossible de dire elles fonctionnent toutes. Toutefois, en théorie, ils doivent, et nous allons suivre la clé de ceux qui ne.2 These extension categories are so diverse, that it's impossible to say they all work. However, in theory, they should, and we'll track the key ones that don't.

3 ces catégories d’extension peuvent tirer parti des expériences de collaboration, et nous avons besoin de commentaires de l’utilisateur final de savoir que !3 These extension categories may benefit from collaborative experiences, and so we need end-user feedback to know that!

4 qui nécessitent l’invité pour les outils de runtime est installés (par exemple, Node.js) et fonctionne en exécutant le code localement.4 These require the guest to have the runtime tools installed (e.g. Node.js), and work by running code locally.

5 ces fonctionne en vous connectant à un serveur quelconque et peuvent fonctionner avec deux serveurs centralisés, les serveurs qui l’invité a partagé.5 These work by connecting to a server of some kind, and can work with either centralized servers, servers that the guest has shared.

Visual StudioVisual Studio

À venir.Coming soon.

Extensions spécifiques au projetProject-Specific Extensions

Extensions de l’hôte installé, qui gèrent la modification, la génération et débogage d’une application de base et sont spécifiques à une langue/plateforme/library/Kit de développement logiciel, doivent être automatiquement disponibles pour les invités, sans avoir à installer quoi que ce soit.Host-installed extensions, which support the core editing, building and debugging of an application, and are specific to a language/platform/library/SDK, should be automatically available to guests, without requiring them to install anything. De cette façon, hôtes peuvent configurer leur environnement pour prendre en charge le développement productif d’un projet et autoriser leurs invités à instantanément les joindre, sans les composants requis supplémentaires.This way, hosts can setup their environment to support productive development of a project, and allow their guests to instantly join them, without additional pre-requisites. Étant donné que les extensions spécifiques au projet ne sont pas subjective ou personnels en aucune façon, ils peuvent être déterministe partagés à partir de l’hôte-invité, sans affecter l’environnement familier de tous les utilisateurs.Because project-specific extensions aren't subjective or personal in any way, they can be deterministically shared from host-to-guest, without impacting anyone's familiar environment.

En outre, pour prendre en charge les extensions spécifiques au projet un invité ont été installés, mais l’hôte ne, qu’elles dans l’idéal, fournissent une expérience dégradée, fonctionnelle (par exemple, l’obtention d’un fichier unique intellisense, la possibilité de mettre en forme un document).Additionally, in order to support project-specific extensions that a guest has installed, but the host doesn't, they would ideally provide a degraded, yet functional experience (e.g. getting single file intellisense, being able to format a document).

CategoryCategory Exemple (s)Example(s) Partagé ?Shared? Invité-pris en charge ?Guest-Supported?
Grammaires / la coloration syntaxiqueGrammars / Syntax highlighting Interpréteur de commandes de poissons, Nginx, Vetur, DotEnv, ES6 chaîne HTML, Todo +, Arc-en-ciel CSVFish Shell, Nginx, Vetur, DotEnv, ES6 String HTML, Todo+, Rainbow CSV
Services de langageLanguage Services YAML, Intellisense de chemin d’accès, ARMYAML, Path Intellisense, ARM 11 22
Schémas JSONJSON Schemas Azure FunctionsAzure Functions
LintersLinters ESLint, Markdownlint, Code vérificateur orthographique, PHPCSESLint, Markdownlint, Code Spell Checker, PHPCS 22
FormateursFormatters Prettier, BeautifyPrettier, Beautify 22
DébogueursDebuggers Python, débogueur pour ChromePython, Debugger for Chrome 33 44
Exécuteurs de testTest Runners Java Test Runner, Mocha Sidebar, Postman Runner, Jest Runner, NeptuneJava Test Runner, Mocha Sidebar, Postman Runner, Jest Runner, Neptune 55 22
Générateurs d’aperçu de fichier personnaliséCustom File Previewers Aperçu SVG, GraphViz, Markdown taille de l’ImageSVG Preview, GraphViz, Markdown Image Size
Générateurs de fichier/projetFile/Project Generators Azure Functions, Générateur de projet C/C++Azure Functions, C/C++ Project Generator 66
Fournisseurs de contrôle de code sourceSource control providers SVN, HgSVN, Hg

1 actuellement, seuls C# et JavaScript/TypeScript, avec plus de prise en charge sera bientôt disponible.1 Currently only C# and JavaScript/TypeScript, with more support coming soon.

2 uniquement en charge dans le document actif, comme invités n’ont pas accès aux fichiers locaux.2 Would only support the current active document, since guests don't have local file access.

3 l’expérience de débogage de noyau est partagé, toutefois, tous les serveurs lancées ne sont pas transférés automatiquement.3 The core debugging experience is shared, however, any launched servers aren't automatically forwarded.

4 invités n’ont pas une copie locale de l’application, et par conséquent, l’application en cours d’exécution et des sessions de débogage doivent démarrer sur l’ordinateur de l’hôte.4 Guests don't have a local copy of the app, and therefore, the running app and any debug sessions need to start on the host's machine.

5 la sortie d’une série de tests nécessiterait que les terminaux qui en résulte, les volets de sortie et les erreurs ont été également partagés avec les invités.5 The output of a test run would require that any resulting terminals, output panes and errors were also shared with guests.

6 presque tous ces utiliserait le Node.js fs module directement pour créer des fichiers qui ne fonctionnerait pas.6 Almost all of these would use the Node.js fs module directly to create files, which wouldn't work.

Visual StudioVisual Studio

À venir.Coming soon.

Problèmes connusKnown Issues

Problèmes connus d’extension, qui peuvent les empêcher de fonctionner pour les invités dans le contexte d’une session de collaboration (ainsi que leurs solutions de contournement) et par conséquent, peuvent avoir un impact sur leur flux de travail sont les suivantes :The following are currently known extension issues, that could prevent them from working for guests within the context of a collaboration session (along with their workarounds), and therefore, could impact their workflow:

Visual Studio CodeVisual Studio Code

ProblèmeIssue RaisonReason Solution de contournementWorkaround
L’aide de Node.js fs module pour détecter/lecture de fichiers (par exemple, un fichier de configuration) ou énumérer des répertoires (et vous n’êtes pas un service de langage).Using the Node.js fs module to detect/read files (e.g. a config file), or enumerate directories (and you aren't a language service). Invités n’ont pas accès aux fichiers locaux.Guests don't have local file access. 1. Dégradation de l’expérience utilisateur (si possible).1. Gracefully degrade the user-experience (if possible).

2. Utilisez le openTextDocument et findFiles API pour lire et d’énumérer les fichiers de l’espace de travail.2. Use the openTextDocument and findFiles workspace APIs to read and enumerate files.
L’aide de Node.js fs module pour créer ou écrire des fichiersUsing the Node.js fs module to create or write files Comme ci-dessusSame as above N/a vous pouvez utiliser la openTextDocument(Uri) API pour créer un untitled fichier, mais vous ne pouvez pas l’enregistrer directement sur le système de fichiers à un emplacement spécifique.N/A You can use the openTextDocument(Uri) API to create an untitled file, but you can't save it directly to the file system, at a specific path.
Selon une bibliothèque regroupés de projet ou l’outilDepending on a project-bundled library or tool Comme ci-dessusSame as above 1. Une version de secours de la dépendance avec l’extension du bundle1. Bundle a fallback version of the dependency with the extension

2. Prend en charge une installation globale pour débloquer invités s’ils choisissent d’installer de manière explicite.2. Support global installation to unblock guests if they choose to explicitly install it.

3. Accédez à distance l’état/action si possible, puisque l’hôte n’auriez les dépendances de droite.3. Remote the state/action if possible, since the host would have the right dependencies available.
L’aide de Node.js fs module permettant de créer un répertoireUsing the Node.js fs module to create a directory Comme ci-dessusSame as above N/AN/A
Limitant les fonctionnalités pour les documents qui utilisent le file schéma.Restricting functionality to documents that use the file scheme. Fichiers sur l’utilisation de l’invité côté la vsls schéma.Files on the guest's side use the vsls scheme. Ajouter la prise en charge de vsls documents (exemple)Add support for vsls documents (example)
À l’aide de la Uri.file méthode et/ou Uri.fsPath / TextDocument.fileName membres à sérialiser/analyse des URIUsing the Uri.file method and/or Uri.fsPath/TextDocument.fileName members to serialize/parse URIs Comme ci-dessusSame as above Utilisez Uri.parse et Url.toString() au lieu de cela, laquelle maintenir et respectent les schémas de fichier (exemple)Use Uri.parse and Url.toString() instead, which maintain and respect file schemes (example)
À l’aide de la workspace.openTextDocument méthode avec un chemin d’accès de fichier au lieu d’un UriUsing the workspace.openTextDocument method with a file path instead of a Uri Comme ci-dessusSame as above Fournir un Uri instance au lieu d’une chaîne de chemin d’accès de fichier brut (exemple)Provide a Uri instance instead of a raw file path string (example)
À l’aide de la workspace.rootPath propriété pour détecter la présence d’un espace de travailUsing the workspace.rootPath property to detect the presence of a workspace Le workspace.rootPath les appels de propriété Uri.fsPath sur le premier workspaceFolder dans le workspace, qui a le même problème mentionné ci-dessusThe workspace.rootPath property calls Uri.fsPath on the first workspaceFolder in the workspace, which has the same issue mentioned above Utilisez le workspace.workspaceFolders propriété pour détecter la présence d’un espace de travail à la place et si nécessaire, en revue chacune workspaceFolderde Uri.scheme pour déterminer s’il est local ou nonUse the workspace.workspaceFolders property to detect the presence of a workspace instead, and if needed, look at each workspaceFolder's Uri.scheme to determine if it's local or not
Ne pas spécifier un schéma de document lors de l’inscription des services de langage (via un LanguageClient, ou le languages.register* méthodes)Not specifying a document scheme when registering language services (either via a LanguageClient, or the languages.register* methods) Invités recevront les résultats de service de langage à partir de leurs extensions locales et à l’hôte et par conséquent, si les deux participants ont la même extension de service de langage installée, invités ne voient pas les entrées en double pour certains éléments (par exemple, la saisie semi-automatique, code actions)Guests receive the language service results from both their local extensions, and the host, and therefore, if both participants have the same language service extension installed, guests will see duplicate entries for certain things (e.g. auto-completion, code actions) Restreindre les services de langage seulement file et untitled schémas (exemple)Restrict the language services to only file and untitled schemes (example)
Ne pas de vérification d’un document Uri.scheme avant le remplissage un DiagnosticCollection pour celui-ciNot checking a document's Uri.scheme before populating a DiagnosticCollection for it Comme ci-dessusSame as above Générer uniquement Diagnostics pour documents dont Uri.scheme === file (exemple)Only generate Diagnostics for documents whose Uri.scheme === file (example)
Ne pas de vérification pour le schéma de l’espace de travail lors du retour Tasks à partir d’un personnalisé TaskProviderNot checking for workspace scheme when returning Tasks from a custom TaskProvider Invités affichent toutes les tâches à distance et locales et par conséquent, afficherait les doublons si les deux participants avaient la même extension qu’installéeGuests display all remote and local tasks, and therefore, would display duplicates if both participants had the same extension installed Retourner uniquement les Tasks pour WorkspaceFolders dont Uri.scheme === file (exemple)Only return Tasks for WorkspaceFolders whose Uri.scheme === file (example)

Visual StudioVisual Studio

À venir.Coming soon.

Voir aussiSee also

Vous rencontrez des problèmes ?Having problems? Voir la section dépannage ou fournir des commentaires.See troubleshooting or provide feedback.