Prise en charge de Ngen dans VSIX v3Ngen support in VSIX v3

Avec Visual Studio 2017 et le nouveau v3 VSIX (version 3) manifeste d’extension 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:

Le Générateur d’images natives (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ée en cochant la case à cocher « tous les utilisateurs » le extension.vsixmanifest concepteur :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éen) - si la valeur est true, le programme d’installation de Visual Studio sera « ngen » de l’assembly.Ngen (Boolean) - If true, the Visual Studio installer will "ngen" the assembly.
  2. Application Ngen (chaîne) - Ngen offre la possibilité d’utiliser d’une application app.config fichier 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 la propriété app.config vous souhaitez utiliser (par rapport au répertoire d’installation de Visual Studio).This value should be set to an application whose app.config you want to use (relative to the Visual Studio install directory).
  3. Ngen Architecture (énumération) - l’architecture de compiler en mode natif votre assembly.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 (entier compris entre 1 et 3) - niveau de la priorité de Ngen est décrit à l’adresse 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 projet VSIX .csproj fichier :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 de Concepteur de propriété 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) tant 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.