Ottimizzare le app desktop .NET con immagini native

È possibile migliorare il tempo di avvio dell'applicazione .NET Framework precompilando i file binari. È possibile usare questa tecnologia in applicazioni di grandi dimensioni che si crea un pacchetto e una distribuzione tramite il Microsoft Store. In alcuni casi, è stato osservato un miglioramento delle prestazioni del 20%. Per altre informazioni su questa tecnologia, vedere la panoramica tecnica.

Il compilatore di immagini native è stato rilasciato come pacchetto NuGet. È possibile applicare questo pacchetto a qualsiasi applicazione .NET Framework destinata alla .NET Framework versione 4.6.2 o successiva. Questo pacchetto aggiunge un passaggio di post-compilazione che include un payload nativo a tutti i file binari usati dall'applicazione. Questo payload ottimizzato verrà caricato quando l'applicazione viene eseguita in .NET 4.7.2 e versioni successive, mentre le versioni precedenti caricheranno ancora il codice MSIL.

.NET Framework 4.7.2 è incluso nell'aggiornamento di Windows 10 aprile 2018. È anche possibile installare questa versione del .NET Framework nei PC che eseguono Windows 7+ e Windows Server 2008 R2+.

Importante

Se si desidera produrre immagini native per l'applicazione in pacchetto dal progetto di creazione pacchetti di applicazioni Windows, assicurarsi di impostare la versione minima della piattaforma di destinazione del progetto sull'aggiornamento dell'anniversario di Windows.

Come produrre immagini native

Seguire queste istruzioni per configurare i progetti.

  1. Configurare il framework di destinazione come 4.6.2 o versione successiva

  2. Configurare la piattaforma di destinazione come x86 o x64

  3. Aggiungere i pacchetti NuGet.

  4. Creare una build di versione.

Configurare il framework di destinazione come 4.6.2 o versione successiva

Per configurare il progetto in modo che sia destinato .NET Framework 4.6.2, sono necessari gli strumenti di sviluppo .NET Framework 4.6.2 o versione successiva. Questi strumenti sono disponibili tramite il programma di installazione di Visual Studio come componenti facoltativi nel carico di lavoro Sviluppo desktop .NET:

Install .NET 4.6.2 development tools

In alternativa, è possibile ottenere i pacchetti per sviluppatori .NET da: https://www.microsoft.com/net/download/visual-studio-sdks

Configurare la piattaforma di destinazione come x86 o x64

Il compilatore di immagini native ottimizza il codice per una determinata piattaforma. Per usarla, è necessario configurare l'applicazione per una piattaforma specifica, ad esempio x86 o x64.

Se nella soluzione sono presenti più progetti, è necessario compilare come x86 o x64 solo il progetto che produce un file eseguibile. I file binari aggiuntivi a cui fa riferimento il progetto principale verranno elaborati con l'architettura specificata nel progetto principale, anche se vengono compilati come AnyCPU.

Per configurare il progetto:

  1. Fare clic con il pulsante destro del mouse sulla soluzione e quindi scegliere Configuration Manager.

  2. Selezionare <Nuovo ..> nel menu a discesa Piattaforma accanto al nome del progetto che produce il file eseguibile.

  3. Nella finestra di dialogo Nuova piattaforma Project verificare che l'elenco a discesa Copia Impostazioni da sia impostato su Qualsiasi CPU.

Configure x86

Ripetere questo passaggio per Release/x64 se si desidera produrre file binari x64.

Importante

La configurazione anyCPU non è supportata dal compilatore di immagini native.

Aggiungere i pacchetti NuGet

Il compilatore di immagini native viene fornito come pacchetto NuGet che è necessario aggiungere al progetto Visual Studio che produce il file eseguibile. Si tratta in genere del progetto Windows Forms o WPF. Usare questo comando di PowerShell per eseguire questa operazione.

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

Creare una build di versione

Il pacchetto NuGet configura il progetto per eseguire uno strumento aggiuntivo per le build di versione. Questo strumento aggiunge il codice nativo agli stessi file binari. Per verificare che lo strumento abbia elaborato i file binari, è possibile esaminare l'output di compilazione per assicurarsi che includa un messaggio come questo:

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

La compilazione di immagini native può essere attivata nelle build non definitive impostando la proprietà NgenR2R su true nel file di progetto.

Domande frequenti

Q. I nuovi file binari funzionano nei computer senza .NET Framework 4.7.2?

A. I file binari ottimizzati trarranno vantaggio dai miglioramenti durante l'esecuzione con .NET Framework 4.7.2. I client che eseguono versioni precedenti di .NET Framework caricheranno il codice MSIL non ottimizzato dal file binario.

Q. Come è possibile fornire commenti e suggerimenti o segnalare i problemi?

A. Segnalare un problema usando lo strumento Feedback in Visual Studio 2017. Altre informazioni.

Q. Qual è l'impatto dell'aggiunta dell'immagine nativa ai file binari esistenti?

A. I file binari ottimizzati contengono il codice gestito e nativo, rendendo i file finali maggiori.

Q. È possibile rilasciare file binari usando questa tecnologia?

A. Questa versione include una licenza Go Live che è possibile usare oggi.