Prise en charge Ngen VSIX v3Ngen support in VSIX v3

Avec Visual Studio 2017 et la v3 VSIX nouvelle extension (version 3) manifeste format, extension les développeurs peuvent désormais « ngen » leurs assemblys au moment de l’installation.With Visual Studio 2017 and the new VSIX v3 (version 3) extension manifest format, extension developers can now "ngen" their assemblies at installation time.

Voici un extrait à partir de MSDN qui explique quelles « ngen » fait :Below is an excerpt from MSDN that explains what "ngen" does:

L'outil Native Image Generator Tool (Ngen.exe) est un outil qui améliore les performances des applications managées.The Native Image Generator (Ngen.exe) is a tool that improves the performance of managed applications. Ngen.exe crée des images natives, qui sont des fichiers contenant le code machine compilé spécifique au processeur, et les installe dans le cache des images natives sur l'ordinateur local.Ngen.exe creates native images, which are files containing compiled processor-specific machine code, and installs them into the native image cache on the local computer. Le runtime peut utiliser des images natives du cache plutôt que le compilateur juste-à-temps (JIT) pour compiler l'assembly d'origine.The runtime can use native images from the cache instead of using the just-in-time (JIT) compiler to compile the original assembly.

à partir de Ngen.exe (Native Image Generator)from Ngen.exe (Native Image Generator)

Dans l’ordre de « ngen » un assembly, l’extension VSIX doit être installé « par instance par ordinateur ».In order to "ngen" an assembly, the VSIX must be installed "per-instance per-machine". Cela peut être activé en activant la case à cocher « tous les utilisateurs » dans le concepteur extension.vsixmanifest :This can be enabled by checking the "all-users" checkbox in the extension.vsixmanifest designer:

Vérifiez tous les utilisateurs

L’activation de NgenHow to enable Ngen

Pour activer ngen pour un assembly, vous pouvez utiliser la propriétés fenêtre dans Visual Studio.To enable ngen for an assembly, you can use the Properties window in Visual Studio.

Il existe 4 propriétés qui peuvent être définies :There are 4 properties that can be set:

  1. Ngen (booléenne) - si la valeur est true, le programme d’installation de Visual Studio est « ngen » de l’assembly.Ngen (Boolean) - If true, the Visual Studio installer will "ngen" the assembly.
  2. Application de Ngen (chaîne), Ngen offre la possibilité d’utiliser le fichier app.config de l’application afin de résoudre les dépendances d’assembly.Ngen application (string) - Ngen provides the opportunity to use an application's app.config file in order to resolve assembly dependencies. Cette valeur doit être définie à une application dont vous souhaitez utiliser (relatif au répertoire d’installation de Visual Studio) de app.config.This value should be set to an application whose app.config you want to use (relative to the Visual Studio install directory).
  3. Architecture de Ngen (enum) - l’architecture de votre assembly de la compilation en mode natif.Ngen Architecture (enum) - The architecture to natively compile your assembly. Les options sont : un.The options are: a. NotSpecified b.NotSpecified b. X86 c.X86 c. X64 d.X64 d. TousAll
  4. Priorité de Ngen (nombre entier compris entre 1 et 3) - décrite au niveau de la priorité de Ngen les niveaux de priorité de Ngen.exe.Ngen Priority (integer between 1 and 3) - The Ngen Priority level is documented at Ngen.exe Priority Levels.

Voici un aperçu de la propriétés fenêtre en action :Here's a look at the Properties window in action:

Ngen dans les propriétés

Cette opération ajoute des métadonnées à la référence de projet à l’intérieur du fichier .csproj du projet VSIX :This will add metadata to the project reference inside of the VSIX project's .csproj file:

 <ProjectReference Include="..\ClassLibrary1\ClassLibrary1.csproj">
    <Project>{69a979f1-eba2-43e7-9346-0e56e803508b}</Project>
    <Name>ClassLibrary1</Name>
    <Ngen>True</Ngen>
    <NgenApplication>vsn.exe</NgenApplication>
    <NgenArchitecture>X86</NgenArchitecture>
    <NgenPriority>2</NgenPriority>
</ProjectReference>

Remarque : vous pouvez modifier le fichier .csproj directement, si vous préférez.Note: You can edit the .csproj file directly, if you prefer.

Informations supplémentairesExtra information

Les modifications concepteur des propriétés s’appliquent aux plus que les références de projet ; Vous pouvez définir les métadonnées de Ngen pour les éléments à l’intérieur de votre projet (en utilisant les mêmes méthodes décrites ci-dessus) aussi longtemps que les éléments sont des assemblys .NET.The property designer changes apply to more than just project references; you can set the Ngen metadata for items inside of your project as well (using the same methods described above) as long as the items are .NET assemblies.