Modifications apportées à l’extensibilité de Visual Studio 2017Changes in Visual Studio 2017 extensibility

Avec Visual Studio 2017, nous offrons une plus rapide, légère expérience d’installation de Visual Studio afin de réduire l’impact de Visual Studio sur les systèmes de l’utilisateur, tout en donnant aux utilisateurs plus grand choix sur les fonctionnalités et les charges de travail qui sont installés.With Visual Studio 2017, we're offering a faster, lighter-weight Visual Studio installation experience that reduces the impact of Visual Studio on user systems, while giving users greater choice over the workloads and features that are installed. Pour prendre en charge ces améliorations, nous avez apporté des modifications au modèle d’extensibilité et qui ont effectué des modifications avec rupture à l’extensibilité de Visual Studio.To support these improvements, we've made changes to the extensibility model, and have made some breaking changes to Visual Studio extensibility. Ce document décrit les détails techniques de ces modifications, et ce qui peut être fait pour les résoudre.This document will describe the technical details of these changes, and what can be done to address them. Notez que certaines informations sont détails de l’implémentation d’un point-à-temps et peuvent être modifiées ultérieurement.Please note that some information is point-in-time implementation details and may be changed later.

Modifications qui affectent l’Installation et le Format VSIXChanges Affecting VSIX Format and Installation

Nous avons créé la v3 VSIX format (version 3) pour prendre en charge l’expérience d’installation de légers.We're introducing the VSIX v3 (version 3) format to support the light-weight installation experience.

Modifications du format VSIX sont les suivantes :Changes to the VSIX format include:

  • Déclaration de la configuration requise.Declaration of setup prerequisites. Pour fournir la promesse de léger et rapide à l’installation de Visual Studio, le programme d’installation propose désormais davantage d’options de configuration pour les utilisateurs.To deliver on the promise of a lightweight, fast-installing Visual Studio, the installer now offers more configuration options to users. Par conséquent, pour vous assurer que les fonctionnalités et les composants requis par une extension sont installés, les extensions devez déclarer leurs dépendances.As a result, to ensure that the features and components required by an extension are installed, extensions will need to declare their dependencies.
    • Le programme d’installation de Visual Studio 2017 propose automatiquement acquérir et installer les composants nécessaires pour l’utilisateur en tant que partie de l’installation de votre extension.The Visual Studio 2017 installer will automatically offer to acquire and install the necessary components for the user as part of installing your extension.
    • Les utilisateurs sont avertis également lorsque vous tentez d’installer une extension qui n’a pas créée en utilisant le nouveau format VSIX v3, même si elles ont été marquées dans leur manifeste en ciblant la version 15.0.Users will also be warned when trying to install an extension that was not built using the new VSIX v3 format, even if they have been marked in their manifest as targeting version 15.0.
  • Capacités améliorées pour le format VSIX.Enhanced capabilities for the VSIX format. Pour respecter une l’installation low impact de Visual Studio qui prend également en charge l’installation côte à côte, nous ne sont plus enregistrer les données de configuration dans le Registre système et avez déplacé des assemblys spécifiques à Visual Studio hors du GAC.To deliver on a low-impact install of Visual Studio that also supports side-by-side installs, we no longer save most configuration data to the system registry and have moved Visual Studio-specific assemblies out of the GAC. Nous avons également augmenté les fonctionnalités du format VSIX et moteur d’installation VSIX, ce qui vous permet d’installer vos extensions pour certains types d’installation plutôt que des EXE ou un fichier MSI.We also increased the capabilities of the VSIX format and VSIX installation engine, allowing you to use it rather than an MSI or EXE to install your extensions for some installation types.

    Les nouvelles fonctionnalités sont les suivantes :The new capabilities include:

    • Inscription dans l’instance spécifiée de Visual Studio.Registration into the specified Visual Studio instance.
    • Installation en dehors de la dossier extensions.Installation outside the extensions folder.
    • Détection de l’architecture processeur.Detection of processor architecture.
    • Dépendance de langage séparées par des modules linguistiques.Dependence on language-separated language packs.
    • Installation avec prise en charge NGEN.Installation with NGEN support.

Génération d’une extension de Visual Studio 2017Building an extension for Visual Studio 2017

Concepteur pour les outils pour la création de nouveau le format de manifeste VSIX v3 est désormais disponible dans Visual Studio 2017.Designer tooling for authoring of the new VSIX v3 manifest format is now available in Visual Studio 2017. Consultez le document d’accompagnement Comment : migrer les projets d’extensibilité pour Visual Studio 2017 pour plus d’informations sur à l’aide des outils du concepteur ou l’apport de mises à jour manuelles pour le projet et le manifeste pour développer les extensions VSIX v3.See the accompanying document How to: Migrate Extensibility Projects to Visual Studio 2017 for details on using the designer tools or making manual updates to the project and manifest to develop VSIX v3 extensions.

Modification : Chemin d’accès des données utilisateur Visual StudioChange: Visual Studio user data path

Auparavant, une seule installation de chaque version majeure de Visual Studio peut exister sur chaque ordinateur.Previously, only one installation of each major release of Visual Studio could exist on each machine. Pour prendre en charge les installations côte à côte de Visual Studio 2017, plusieurs chemins de données utilisateur pour Visual Studio peuvent exister sur l’ordinateur de l’utilisateur.To support side-by-side installations of Visual Studio 2017, multiple user data paths for Visual Studio may exist on the user's machine.

Code qui s’exécute au sein du processus Visual Studio doit être mis à jour pour utiliser le Gestionnaire de paramètres de Visual Studio.Code running inside the Visual Studio process should be updated to use the Visual Studio Settings Manager. Code qui s’exécute en dehors du processus Visual Studio peut trouver le chemin d’accès de l’utilisateur d’une installation de Visual Studio spécifique en suivant les instructions fournies ici.Code running outside of the Visual Studio process can find the user path of a specific Visual Studio installation by following the guidance here.

Modification : Global Assembly Cache (GAC)Change: Global Assembly Cache (GAC)

La plupart des assemblys principaux de Visual Studio ne sont plus installés dans le GAC.Most Visual Studio core assemblies are no longer installed into the GAC. Les modifications suivantes ont été apportées afin que le code s’exécutant dans le processus de Visual Studio peut toujours trouver les assemblys requis lors de l’exécution.The following changes were made so that code running in Visual Studio process can still find required assemblies at runtime.

Note

[INSTALLDIR] ci-dessous fait référence au répertoire racine d’installation de Visual Studio.[INSTALLDIR] below refers to the installation root directory of Visual Studio. VSIXInstaller.exe sera automatiquement le remplir, mais pour écrire du code de déploiement personnalisé, veuillez lire recherche Visual Studio.VSIXInstaller.exe will automatically populate this, but to write custom deployment code, please read locating Visual Studio.

  • Assemblys qui ont été installés uniquement dans le GAC :Assemblies that were only installed into the GAC:
    • Ces assemblys sont maintenant installés sous [INSTALLDIR] \Common7\IDE, [INSTALLDIR] \Common7\IDE\PublicAssemblies ou [INSTALLDIR] \Common7\IDE\PrivateAssemblies.These assemblies are now installed under [INSTALLDIR]\Common7\IDE, [INSTALLDIR]\Common7\IDE\PublicAssemblies or [INSTALLDIR]\Common7\IDE\PrivateAssemblies. Ces dossiers font partie des chemins d’accès de détection du processus Visual Studio.These folders are part of the Visual Studio process's probing paths.
  • Assemblys qui ont été installés dans un chemin d’accès non détection et dans le GAC :Assemblies that were installed into a non-probing path and into the GAC:

    • Le programme d’installation a été supprimée la copie dans le GAC.The copy in the GAC was removed from setup.
    • Un fichier .pkgdef a été ajouté pour spécifier une entrée de base de code pour l’assembly.A .pkgdef file was added to specify a code base entry for the assembly.

      Par exemple :For example:

      [$RootKey$\RuntimeConfiguration\dependentAssembly\codeBase\{UniqueGUID}]
      "name"="AssemblyName" "codeBase"="$PackageFolder$\AssemblyName.dll"
      "publicKeyToken"="Public Key Token"
      "culture"="neutral"
      "version"=15.0.0.0
      

      Lors de l’exécution, le sous-système de pkgdef Visual Studio fusionne ces entrées dans le fichier de configuration d’exécution du processus Visual Studio (sous [VSAPPDATA]\devenv.exe.config) en tant que <codeBase> éléments.At runtime, the Visual Studio pkgdef subsystem will merge these entries into the Visual Studio process's runtime configuration file (under [VSAPPDATA]\devenv.exe.config) as <codeBase> elements. Il s’agit de la méthode recommandée pour vous permettre du processus Visual Studio de trouver votre assembly, car elle évite d’effectuer une recherche dans les chemins d’accès de détection.This is the recommended way to let the Visual Studio process find your assembly, because it avoids searching through probing paths.

Réagir à cette modification avec ruptureReacting to this breaking change

  • Si votre extension est en cours d’exécution dans le processus de Visual Studio :If your extension is running within the Visual Studio process:
    • Votre code sera en mesure de trouver les assemblys principaux de Visual Studio.Your code will be able to find Visual Studio core assemblies.
    • Envisagez d’utiliser un fichier .pkgdef pour spécifier un chemin d’accès à vos assemblys, si nécessaire.Consider using a .pkgdef file to specify a path to your assemblies if necessary.
  • Si votre extension est en cours d’exécution en dehors du processus Visual Studio :If your extension is running outside the Visual Studio process:
    • Envisagez de recherche d’assemblys principaux de Visual Studio sous [INSTALLDIR] \Common7\IDE, [INSTALLDIR] \Common7\IDE\PublicAssemblies ou \Common7\IDE\PrivateAssemblies [INSTALLDIR] à l’aide du résolveur de fichier ou l’assembly de configuration.Consider looking for Visual Studio core assemblies under [INSTALLDIR]\Common7\IDE, [INSTALLDIR]\Common7\IDE\PublicAssemblies or [INSTALLDIR]\Common7\IDE\PrivateAssemblies using configuration file or assembly resolver.

Modification : Réduire l’impact sur le RegistreChange: Reduce registry impact

Inscription de COM globaleGlobal COM registration

  • Auparavant, Visual Studio installé plusieurs clés de Registre dans les ruches HKEY_CLASSES_ROOT et HKEY_LOCAL_MACHINE pour prendre en charge d’inscription COM native.Previously, Visual Studio installed many registry keys into the HKEY_CLASSES_ROOT and HKEY_LOCAL_MACHINE hives to support native COM registration. Pour réduire cet impact, Visual Studio utilise désormais l’Activation sans inscription pour les composants COM.To eliminate this impact, Visual Studio now uses Registration-Free Activation for COM components.
  • Par conséquent, la plupart des TLB / OLB / fichiers DLL sous % ProgramFiles% (x86) %\Common Files\Microsoft Shared\MSEnv ne sont plus installés par défaut par Visual Studio.As a result, most TLB / OLB / DLL files under %ProgramFiles(x86)%\Common Files\Microsoft Shared\MSEnv are no longer installed by default by Visual Studio. Ces fichiers sont maintenant installés sous [INSTALLDIR] avec des manifestes de COM sans inscription correspondants utilisés par le processus hôte de Visual Studio.These files are now installed under [INSTALLDIR] with corresponding Registration-Free COM manifests used by the Visual Studio host process.
  • Par conséquent, le code externe qui s’appuie sur l’inscription de COM globale pour les interfaces COM Visual Studio ne trouvera n’est plus de ces enregistrements.As a result, external code that relies on global COM registration for Visual Studio COM interfaces will no longer find these registrations. Code qui s’exécute à l’intérieur du processus Visual Studio ne verrez pas de différence.Code running inside Visual Studio process will not see a difference.

Registre de Studio VisualVisual Studio registry

  • Auparavant, Visual Studio installé plusieurs clés de Registre dans la ruche HKEY_LOCAL_MACHINE et HKEY_CURRENT_USER du système sous une clé spécifique de Visual Studio :Previously, Visual Studio installed many registry keys into the system's HKEY_LOCAL_MACHINE and HKEY_CURRENT_USER hives under a Visual Studio-specific key:
    • HKLM\Software\Microsoft\VisualStudio\Version: les clés de Registre créés par les programmes d’installation MSI et extensions de machine.HKLM\Software\Microsoft\VisualStudio\Version: Registry keys created by MSI installers and per-machine extensions.
    • HKCU\Software\Microsoft\VisualStudio\Version: les clés de Registre créés par Visual Studio pour stocker des paramètres spécifiques à l’utilisateur.HKCU\Software\Microsoft\VisualStudio\Version: Registry keys created by Visual Studio to store user-specific settings.
    • HKCU\Software\Microsoft\VisualStudio\Version_Config : une copie de la clé de Visual Studio HKLM ci-dessus, ainsi que les clés de Registre fusionnées à partir de fichiers de .pkgdef par les extensions.HKCU\Software\Microsoft\VisualStudio\Version_Config: A copy of Visual Studio HKLM key above, plus the registry keys merged from .pkgdef files by extensions.
  • Pour réduire l’impact sur le Registre, Visual Studio utilise désormais la RegLoadAppKey (fonction) pour stocker les clés de Registre dans un fichier binaire privé sous [VSAPPDATA]\privateregistry.bin.To reduce the impact on the registry, Visual Studio now uses the RegLoadAppKey function to store registry keys in a private binary file under [VSAPPDATA]\privateregistry.bin. Uniquement un très petit nombre de clés spécifiques Visual Studio reste dans le Registre système.Only a very small number of Visual Studio-specific keys remain in the system registry.
  • Code existant qui s’exécute au sein du processus Visual Studio n’est pas affecté.Existing code running inside the Visual Studio process is not impacted. Visual Studio effectue une redirection toutes les opérations de Registre sous la clé HKCU Visual Studio spécifiques dans le Registre privé.Visual Studio will redirect all registry operations under the HKCU Visual Studio-specific key to the private registry. Lecture et en écriture à d’autres emplacements de Registre continue à utiliser le Registre système.Reading and writing to other registry locations will continue to use the system registry.
  • Code externe doit charger et lire à partir de ce fichier pour les entrées de Registre de Visual Studio.External code will need to load and read from this file for Visual Studio registry entries.

Réagir à cette modification avec ruptureReacting to this breaking change

  • Le code externe doit être converti pour utiliser l’activation sans inscription pour les composants COM et.External code should be converted to use Registration-Free activation for COM components as well.
  • Composants externes pour trouver l’emplacement de Visual Studio en suivant les instructions fournies ici.External components can find the Visual Studio location by following the guidance here.
  • Nous recommandons d’utilisent des composants externes les Gestionnaire de paramètres externe au lieu de lecture/écriture directement aux clés de Registre de Visual Studio.We recommend that external components use the External Settings Manager instead of reading/writing directly to Visual Studio registry keys.
  • Vérifiez si les composants à l’aide de votre extension a peut-être implémenté une autre technique pour l’inscription.Check whether the components your extension is using may have implemented another technique for registration. Par exemple, les extensions de débogueur peuvent être en mesure de tirer parti de la nouvelle msvsmon d’enregistrement du fichier JSON COM.For example, debugger extensions may be able to take advantage of the new msvsmon JSON-file COM registration.