Ottimizzare le app desktop .NET con immagini nativeOptimize your .NET desktop apps with native images

Puoi migliorare il tempo di avvio della tua applicazione .NET Framework precompilando i file binari.You can improve the startup time of your .NET Framework application by pre-compiling your binaries. Questa tecnologia può essere usata per le applicazioni di grandi dimensioni che vengono assemblate in pacchetti e distribuite tramite Microsoft Store.You can use this technology on large applications that you package and distribute through the Microsoft Store. In alcuni casi, abbiamo osservato un miglioramento delle prestazioni del 20%.In some cases, we've observed a 20% performance improvement. Per altre informazioni su questa tecnologia, vedi la panoramica tecnica.You can learn more about this technology in the technical overview.

Il compilatore di immagini native è stato rilasciato come pacchetto NuGet,We've released the native image compiler as a NuGet package. che può essere applicato a qualsiasi applicazione destinata a .NET Framework versione 4.6.2 o successive.You can apply this package to any .NET Framework application that targets the .NET Framework version 4.6.2 or later. Questo pacchetto aggiunge un passaggio di post-compilazione che include un payload nativo in tutti i file binari usati dall'applicazione.This package adds a post build step that includes a native payload to all the binaries used by your application. Questo payload ottimizzato verrà caricato quando l'applicazione viene eseguita in .NET 4.7.2 e versioni successive, mentre le versioni precedenti continueranno a caricare il codice 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 è incluso nell'aggiornamento di Windows 10 del mese di aprile 2018.The .NET framework 4.7.2 is included in the Windows 10 April 2018 update. Puoi installare questa versione di .NET Framework anche nei PC che eseguono Windows 7 e versioni successive e Windows Server 2008 R2 e versioni successive.You can also install this version of the .NET Framework on PCs that run Windows 7+ and Windows Server 2008 R2+.

Importante

Se vuoi generare immagini native per l'applicazione assemblata in pacchetto dal progetto di creazione pacchetti di applicazioni Windows, assicurati di impostare la versione minima della piattaforma di destinazione del progetto sull'Aggiornamento dell'anniversario di Windows.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.

Come generare immagini nativeHow to produce native images

Per configurare i progetti segui queste istruzioni.Follow these instructions to configure your projects.

  1. Configura .NET Framework versione 4.6.2 o successiva come framework di destinazione.Configure the target framework as 4.6.2 or above

  2. Configura x86 o x64 come piattaforma di destinazione.Configure the target platform as x86 or x64

  3. Aggiungi i pacchetti NuGet.Add the NuGet packages.

  4. Crea una build di versione.Create a Release Build.

Configurare .NET Framework versione 4.6.2 o successiva come framework di destinazioneConfigure the target framework as 4.6.2 or above

Per configurare .NET Framework 4.6.2 come destinazione per il tuo progetto, sono necessari gli strumenti di sviluppo .NET Framework 4.6.2 o più recenti.To configure your project to target .NET Framework 4.6.2 you will need the .NET Framework 4.6.2 development tools or newer. Questi strumenti sono disponibili tramite il programma di installazione di Visual Studio come componenti facoltativi nel carico di lavoro Sviluppo per desktop .NET:These tools are available through the Visual Studio installer as optional components under the .NET desktop development workload:

Installare gli strumenti di sviluppo di .NET 4.6.2

In alternativa, puoi scaricare i pacchetti per sviluppatori .NET da questo indirizzo: 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

Configurare x86 o x64 come piattaforma di destinazioneConfigure the target platform as x86 or x64

Il compilatore di immagini native ottimizza il codice per una determinata piattaforma.The native image compiler optimizes the code for a given platform. Per usarlo, devi configurare l'applicazione in modo che sia destinata a una piattaforma specifica, ad esempio x86 o x64.To use it, you need to configure your application to target one specific platform such as x86 or x64.

Se nella tua soluzione sono presenti più progetti, solo il progetto del punto di ingresso (presumibilmente quello che genera un file eseguibile) deve essere compilato come x86 o 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. I file binari aggiuntivi a cui fa riferimento il progetto principale verranno elaborati con l'architettura specificata nel progetto principale, anche se sono compilati come 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.

Per configurare il progetto:To configure your project:

  1. Fai clic con il pulsante destro del mouse sulla soluzione e quindi scegli Configuration Manager.Right-click your solution, and then select Configuration Manager.

  2. Seleziona <Nuova...> dal menu a discesa Piattaforma accanto al nome del progetto che genera il file eseguibile.Select <New ..> in the Platform dropdown menu beside the name of the project that produces your executable file.

  3. Nella finestra di dialogo Nuova piattaforma progetto assicurati che l'elenco a discesa Copia impostazioni da sia impostato su Qualsiasi CPU.In the New Project Platform dialog box, make sure that the Copy Settings from dropdown list is set to Any CPU.

Configurare x86

Ripeti questo passaggio per Release/x64 se vuoi generare file binari per x64.Repeat this step for Release/x64 if you want produce x64 binaries.

Importante

La configurazione AnyCPU non è supportata dal compilatore di immagini native.AnyCPU configuration is not supported by the native image compiler.

Aggiungere i pacchetti NuGetAdd the NuGet packages

Il compilatore di immagini native viene fornito come pacchetto NuGet da aggiungere al progetto di Visual Studio che genera il file eseguibile.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. Si tratta in genere del progetto Windows Forms o WPF.This is typically your Windows Forms or WPF project. Per eseguire questa operazione, usa il comando di PowerShell seguente.Use this PowerShell command to do that.

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

Creare una build di versioneCreate a Release Build

Il pacchetto NuGet configura il progetto per l'esecuzione di uno strumento aggiuntivo per le build di versione.The NuGet package configures the project to run an additional tool for release builds. Questo strumento aggiunge il codice nativo agli stessi file binari.This tool adds the native code to the same binaries. Per verificare che lo strumento abbia elaborato i file binari, puoi esaminare l'output di compilazione per assicurarti che includa un messaggio come il seguente: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.

La compilazione di immagini native può essere attivata nelle build non di versione impostando la proprietà NgenR2R su true nel file di progetto.Native image compilation can be triggered on non-release builds by setting the property NgenR2R to true in the project file.

Domande frequentiFAQ

D. I nuovi file binari possono essere usati nei computer senza .NET Framework 4.7.2?Q. Do the new binaries work on machines without .NET Framework 4.7.2?

A.A. I file binari ottimizzati potranno trarre vantaggio dai miglioramenti introdotti se eseguiti con .NET Framework 4.7.2.Optimized binaries will benefit from the improvements when running with .NET Framework 4.7.2. I client che eseguono le versioni precedenti di .NET Framework caricheranno il codice MSIL non ottimizzato dal codice binario.Clients that run previous .NET framework versions will load the non-optimized MSIL code from the binary.

D. In che modo posso inviare feedback o segnalare problemi?Q. How can I provide feedback or report issues?

A.A. Puoi segnalare un problema usando lo strumento per il feedback disponibile in Visual Studio 2017.Report an issue by using the Feedback tool in Visual Studio 2017. Altre informazioni.More information.

D. Quale impatto ha l'aggiunta dell'immagine nativa sui file binari esistenti?Q. What’s the impact of adding the native image to existing binaries?

A.A. I file binari ottimizzati contengono il codice gestito e il codice nativo e questo contribuisce a rendere più efficaci i file finali.The optimized binaries contain the managed and native code, making the final files greater.

D. Posso rilasciare file binari usando questa tecnologia?Q. Can I release binaries using this technology?

A.A. Questa versione include una licenza Go Live che attualmente puoi usare.This version includes a Go Live license that you can use today.