Compilar aplicativos com o .NET Nativo

O .NET Native é uma tecnologia de pré-compilação para criar e implantar aplicativos UWP. Ele está incluído no Visual Studio 2015 e nas versões posteriores. Ele compila automaticamente em código nativo a versão de lançamento dos aplicativos UWP escritos em código gerenciado (C# ou Visual Basic).

Geralmente, os aplicativos .NET são compilados em IL (linguagem intermediária). No tempo de execução, uma compilação JIT (just-in-time) converte o IL em código nativo. Já o .NET Native compila os aplicativos UWP diretamente em código nativo. Para desenvolvedores, isso significa que:

  • Seus aplicativos apresentam o desempenho do código nativo. Geralmente, o desempenho será superior para um código compilado primeiro em IL e depois compilado em código nativo pelo compilador JIT.

  • Você pode continuar a programar em C# ou em Visual Basic.

  • Você pode continuar aproveitando os recursos fornecidos pelo .NET Framework, como a biblioteca de classes, o gerenciamento de memória e a coleta de lixo automáticos e o tratamento de exceções.

Para os usuários dos aplicativos, o .NET Native oferece estas vantagens:

  • Tempos de execução mais rápidos para a maioria dos aplicativos e cenários.

  • Tempos de inicialização mais rápidos para a maioria dos aplicativos e cenários.

  • Custos baixos de implantação e atualização.

  • Uso otimizado de memória do aplicativo.

No entanto, o .NET Native envolve mais do que apenas a compilação em código nativo. Ele transforma a maneira que os aplicativos .NET Framework são criados e executados. Especialmente:

  • Durante a pré-compilação, as partes necessárias do .NET Framework são vinculadas estaticamente ao aplicativo. Isso permite que o aplicativo seja executado com as bibliotecas de aplicativo locais do .NET Framework e que o compilador realize análises globais para proporcionar vantagens de desempenho. Como resultado, os aplicativos são inicializados consistentemente mais rápido mesmo depois de atualizações do .NET Framework.

  • O runtime do .NET Native é otimizado para pré-compilação estática e, na grande maioria dos casos, oferece um desempenho superior. Ao mesmo tempo, ele mantém os recursos de reflexão principais que os desenvolvedores acham tão produtivos.

  • O .NET Native usa o mesmo back-end que o compilador do C++, que é otimizado para cenários de pré-compilação estática.

O .NET Native consegue oferecer os benefícios de desempenho do C++ para os desenvolvedores de código gerenciado, pois usa as mesmas ferramentas que o C++ ou outras semelhantes nos bastidores, conforme é mostrado nesta tabela.

Componente .NET Nativo C++
Bibliotecas .NET Framework + Windows Runtime Win32 + Windows Runtime
Compilador Compilador de otimização de UTC Compilador de otimização de UTC
Implantado Binários prontos para execução Binários prontos para execução (ASM)
Runtime MRT.dll (runtime de CLR mínimo) CRT.dll (runtime C)

Para os aplicativos UWP, você carrega os binários de compilação de código do .NET Native em pacotes de aplicativos (arquivos .msix ou .appx) na Microsoft Store.