Optimiser vos applications de bureau .NET avec des images nativesOptimize your .NET desktop apps with native images

Vous pouvez réduire le temps de démarrage de votre application .NET Framework en précompilant vos fichiers binaires.You can improve the startup time of your .NET Framework application by pre-compiling your binaries. Vous pouvez utiliser cette technologie sur des applications volumineuses que vous empaquetez et distribuez par le biais du Microsoft Store.You can use this technology on large applications that you package and distribute through the Microsoft Store. Dans certains cas, nous avons observé une amélioration de 20 % des performances.In some cases, we've observed a 20% performance improvement. Pour plus d’informations sur cette technologie, consultez la vue d’ensemble technique.You can learn more about this technology in the technical overview.

Nous avons publié le compilateur d’images natives en tant que package NuGet.We've released the native image compiler as a NuGet package. Vous pouvez appliquer ce package à n’importe quelle application .NET Framework qui cible .NET Framework version 4.6.2 ou ultérieure.You can apply this package to any .NET Framework application that targets the .NET Framework version 4.6.2 or later. Ce package ajoute une étape post-build qui inclut une charge utile native à tous les fichiers binaires utilisés par votre application.This package adds a post build step that includes a native payload to all the binaries used by your application. Cette charge utile optimisée sera chargée lors de l’exécution de l’application dans .NET 4.7.2 et versions ultérieures, tandis que les versions précédentes continueront à charger le code MSIL.This optimized payload will be loaded when the application runs in .NET 4.7.2 and above while previous versions will still load the MSIL code.

.NET Framework 4.7.2 est inclus dans la Mise à jour de Windows 10 d’avril 2018.The .NET framework 4.7.2 is included in the Windows 10 April 2018 update. Vous pouvez également installer cette version du .NET Framework sur des PC qui exécutent Windows 7+ et Windows Server 2008 R2+.You can also install this version of the .NET Framework on PCs that run Windows 7+ and Windows Server 2008 R2+.

Important

Si vous souhaitez produire des images natives pour votre application empaquetée par le projet de création de packages d’applications Windows, veillez à affecter la Mise à jour anniversaire Windows 10 comme version minimale de la plateforme cible du projet.If you want to produce native images for your application packaged by the Windows Application Packaging project, make sure to set the Target Platform Minimum version of the project to the Windows Anniversary Update.

Comment produire des images natives ?How to produce native images

Effectuez les étapes suivantes pour configurer votre projet :Follow these instructions to configure your projects.

  1. Configurer la version cible du .NET Framework sur 4.6.2 ou version ultérieureConfigure the target framework as 4.6.2 or above

  2. Configurer la plateforme cible sur x86 ou x64Configure the target platform as x86 or x64

  3. Ajouter les packages NuGetAdd the NuGet packages.

  4. Créer une build de mise en productionCreate a Release Build.

Configurer la version cible du .NET Framework sur 4.6.2 ou version ultérieureConfigure the target framework as 4.6.2 or above

Pour configurer votre projet de façon à ce qu’il cible .NET Framework 4.6.2, vous avez besoin des outils de développement .NET Framework 4.6.2 ou plus récents.To configure your project to target .NET Framework 4.6.2 you will need the .NET Framework 4.6.2 development tools or newer. Ces outils sont disponibles par le biais du programme d’installation de Visual Studio en tant que composants facultatifs sous la charge de travail du développement d’applications de bureau .NET :These tools are available through the Visual Studio installer as optional components under the .NET desktop development workload:

Installer les outils de développement .NET 4.6.2

Vous pouvez également vous procurer les packs de développement .NET à l’adresse suivantes : https://www.microsoft.com/net/download/visual-studio-sdksAlternatively, you can get the .NET developer packs from: https://www.microsoft.com/net/download/visual-studio-sdks

Configurer la plateforme cible sur x86 ou x64Configure the target platform as x86 or x64

Le compilateur d’images natives optimise le code pour une plateforme donnée.The native image compiler optimizes the code for a given platform. Pour l’utiliser, vous devez configurer votre application afin qu’elle cible une plateforme spécifique, telle que x86 ou x64.To use it, you need to configure your application to target one specific platform such as x86 or x64.

Si votre solution contient plusieurs projets, seul le projet de point d’entrée (probablement celui qui produit un fichier exécutable) doit être compilé en tant que x86 ou x64.If you have multiple projects in your solution, only the entry point project (most likely the project that produces an executable file) has to be compiled as x86 or x64. Les fichiers binaires supplémentaires référencés à partir du projet principal seront traités avec l’architecture spécifiée dans le projet principal, même s’ils sont compilés en tant qu’AnyCPU.Additional binaries referenced from the main project will be processed with the architecture specified in the main project, even if they are compiled as AnyCPU.

Pour configurer votre projetTo configure your project:

  1. Cliquez avec le bouton droit sur votre solution, puis sélectionnez Gestionnaire de configurations.Right-click your solution, and then select Configuration Manager.

  2. Sélectionnez <Nouveau...> dans le menu déroulant Plateforme en regard du nom du projet qui produit votre fichier exécutable.Select <New ..> in the Platform dropdown menu beside the name of the project that produces your executable file.

  3. Dans la boîte de dialogue Nouvelle plateforme de projet, vérifiez que la liste déroulante Copier les paramètres à partir de est définie sur N’importe quelle UC.In the New Project Platform dialog box, make sure that the Copy Settings from dropdown list is set to Any CPU.

Configurer x86

Répétez cette étape pour Release/x64 si vous souhaitez produire des fichiers binaires x64.Repeat this step for Release/x64 if you want produce x64 binaries.

Important

La configuration AnyCPU n’est pas prise en charge par le compilateur d’images natives.AnyCPU configuration is not supported by the native image compiler.

Ajouter les packages NuGetAdd the NuGet packages

Le compilateur d’images natives est fourni sous la forme d’un package NuGet que vous devez ajouter au projet Visual Studio qui produit le fichier exécutable.The native image compiler is provided as a NuGet package that you need to add to the Visual Studio project that produces the executable file. Il s’agit généralement de votre projet Windows Forms ou WPF.This is typically your Windows Forms or WPF project. Pour ce faire, utilisez cette commande PowerShell.Use this PowerShell command to do that.

PM> Install-Package Microsoft.DotNet.Framework.NativeImageCompiler -Version 1.0.0

Créer une build de mise en productionCreate a Release Build

Le package NuGet configure le projet afin qu’il exécute un outil supplémentaire pour les builds de mise en production.The NuGet package configures the project to run an additional tool for release builds. Cet outil ajoute le code natif aux mêmes fichiers binaires.This tool adds the native code to the same binaries. Pour vérifier que l’outil a traité les fichiers binaires, vous pouvez examiner la sortie de génération pour vous assurer qu’elle inclut un message tel que celui-ci :To verify that the tool has processed the binaries you can review the build output to make sure it includes a message such as this one:

Native image obj\x86\Release\\R2R\DesktopApp1.exe generated successfully.

Vous pouvez déclencher la compilation d’images natives sur des builds de non-mise en production en affectant à la propriété NgenR2R la valeur true dans le fichier projet.Native image compilation can be triggered on non-release builds by setting the property NgenR2R to true in the project file.

Forum Aux QuestionsFAQ

Q. Les nouveaux fichiers binaires fonctionnent-ils sur les ordinateurs sans .NET Framework 4.7.2 ?Q. Do the new binaries work on machines without .NET Framework 4.7.2?

A.A. Les fichiers binaires optimisés tirent parti des améliorations apportées lors de l’exécution avec .NET Framework 4.7.2.Optimized binaries will benefit from the improvements when running with .NET Framework 4.7.2. Les clients qui exécutent des versions antérieures du .NET Framework chargeront le code MSIL non optimisé à partir du fichier binaire.Clients that run previous .NET framework versions will load the non-optimized MSIL code from the binary.

Q. Comment puis-je fournir des commentaires ou signaler des problèmes ?Q. How can I provide feedback or report issues?

A.A. Signalez tout problème à l’aide de Microsoft Visual Studio 2017 Feedback Tool.Report an issue by using the Feedback tool in Visual Studio 2017. Informations complémentaires.More information.

Q. Quel est l’impact de l’ajout de l’image native aux fichiers binaires existants ?Q. What’s the impact of adding the native image to existing binaries?

A.A. Les fichiers binaires optimisés contiennent le code managé et le code natif, ce qui rend les fichiers finaux plus volumineux.The optimized binaries contain the managed and native code, making the final files greater.

Q. Est-ce que je peux publier des fichiers binaires en utilisant cette technologie ?Q. Can I release binaries using this technology?

A.A. Cette version comprend une licence Go Live que vous pouvez utiliser dès aujourd’hui.This version includes a Go Live license that you can use today.