Compilare app con .NET Native

.NET Native è una tecnologia di precompilazione per la creazione e la distribuzione di app UWP. .NET Native è incluso in Visual Studio 2015 e versioni successive. Compila automaticamente la versione del rilascio delle app UWP scritte in codice gestito (C# o Visual Basic) in codice nativo.

In genere, le app .NET vengono compilate nella lingua intermedia. In fase di esecuzione, il compilatore just-in-time (JIT) traduce IL in codice nativo. Al contrario, .NET Native compila app UWP direttamente al codice nativo. Per gli sviluppatori, questo significa che:

  • Le app sfruttano le prestazioni del codice nativo. In genere, le prestazioni saranno superiori al codice compilato per prima cosa nella lingua intermedia, quindi verranno compilate in codice nativo dal compilatore JIT.

  • È possibile continuare a programmare in c# o Visual Basic.

  • È possibile continuare a sfruttare le risorse fornite da .NET Framework, incluse libreria di classi, gestione della memoria automatica, garbage collection e gestione delle eccezioni.

Per gli utenti delle app, .NET Native offre i seguenti vantaggi:

  • Tempi di esecuzione più rapidi per la maggior parte delle app e degli scenari.

  • Tempi di avvio più rapidi per la maggior parte delle app e degli scenari.

  • Costi di distribuzione e aggiornamento ridotti.

  • Utilizzo della memoria app ottimizzata.

Ma .NET Native comporta più di una compilazione nel codice nativo. trasforma il modo in cui le applicazioni di .NET Framework vengono compilate ed eseguite. In particolare:

  • Durante la precompilazione, porzioni obbligatorie di .NET Framework vengono collegate in modo statico all'app. Questo consente all'app di essere eseguita con librerie locali dell'app di .NET Framework e al compilatore di eseguire analisi globali per ottenere prestazioni vincenti. Di conseguenza, l'avvio delle applicazioni sarà più rapido e coerente dopo l'aggiornamento di .NET Framework.

  • Il runtime .NET Native è ottimizzato per la precompilazione statica e nella vasta maggioranza dei casi offre prestazioni superiori. Allo stesso tempo, mantiene le funzionalità di reflection di base che gli sviluppatori troveranno estremamente produttive.

  • .NET Native usa lo stesso back-end come compilatore C++, che è ottimizzato per gli scenari di precompilazione statica.

.NET Native può portare i vantaggi delle prestazioni di C++ nel codice gestito dagli sviluppatori perché usa gli stessi strumenti (o simili) di C++ under the hood, come mostra questa tabella.

Componente .NET Native C++
Librerie .NET Framework + Windows Runtime Win32 + Windows Runtime
Compilatore Compilatore di ottimizzazione UTC Compilatore di ottimizzazione UTC
Distribuito File binari Ready to run File binari Ready to run (ASM)
esecuzione MRT.dll (Runtime CLR minimo) CRT.dll (C Runtime)

Per le app UWP, caricare i file binari per la compilazione con .NET Native in pacchetti di applicazioni (file con estensione .msix o .appx) in Microsoft Store.