Otimize os aplicativos de área de trabalho .NET com imagens nativasOptimize your .NET desktop apps with native images

Você pode melhorar o tempo de inicialização do aplicativo .NET Framework compilando previamente os binários.You can improve the startup time of your .NET Framework application by pre-compiling your binaries. Você pode usar essa tecnologia em aplicativos grandes, empacotando-os e distribuindo-os pela Microsoft Store.You can use this technology on large applications that you package and distribute through the Microsoft Store. Em alguns casos, observamos uma melhoria de desempenho de 20%.In some cases, we've observed a 20% performance improvement. Você pode saber mais sobre essa tecnologia na visão geral técnica.You can learn more about this technology in the technical overview.

Lançamos o compilador de imagem nativa como um pacote NuGet.We've released the native image compiler as a NuGet package. Você pode aplicar esse pacote a qualquer aplicativo .NET Framework que tenha como destino o .NET Framework versão 4.6.2 ou posterior.You can apply this package to any .NET Framework application that targets the .NET Framework version 4.6.2 or later. Esse pacote adiciona uma etapa pós-build que inclui uma carga nativa a todos os binários usados pelo aplicativo.This package adds a post build step that includes a native payload to all the binaries used by your application. Essa carga otimizada será carregada quando o aplicativo for executado no .NET 4.7.2 ou posterior; versões anteriores ainda carregarão o código 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.

O .NET framework 4.7.2 está incluído na atualização de abril de 2018 do Windows 10.The .NET framework 4.7.2 is included in the Windows 10 April 2018 update. Você também pode instalar essa versão do .NET Framework em computadores que executam o Windows 7+ e o 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+.

Importante

Se você quiser produzir imagens nativas para o aplicativo empacotado pelo Projeto de Empacotamento de Aplicativo do Windows, assegure-se de definir a versão mínima da plataforma de destino do projeto para a Atualização de Aniversário do 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.

Como produzir imagens nativasHow to produce native images

Siga essas instruções para configurar os projetos.Follow these instructions to configure your projects.

  1. Configure a estrutura de destino como 4.6.2 ou superiorConfigure the target framework as 4.6.2 or above

  2. Configurar a plataforma de destino como x86 ou x64Configure the target platform as x86 or x64

  3. Adicionar os pacotes NuGet.Add the NuGet packages.

  4. Crie um build de lançamento.Create a Release Build.

Configure a estrutura de destino como 4.6.2 ou superiorConfigure the target framework as 4.6.2 or above

Para configurar o projeto para dar preferência ao .NET Framework 4.6.2, será necessário ter as ferramentas de desenvolvimento do .NET Framework 4.6.2 ou mais recentes.To configure your project to target .NET Framework 4.6.2 you will need the .NET Framework 4.6.2 development tools or newer. Essas ferramentas estão disponíveis pelo instalador do Visual Studio como componentes opcionais na carga de trabalho de desenvolvimento de área de trabalho .NET:These tools are available through the Visual Studio installer as optional components under the .NET desktop development workload:

Instalar ferramentas de desenvolvimento .NET 4.6.2

Como alternativa, é possível obter os pacotes de desenvolvedor do .NET em: 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

Configure a plataforma de destino como x86 ou x64Configure the target platform as x86 or x64

O compilador de imagem nativa otimiza o código para uma determinada plataforma.The native image compiler optimizes the code for a given platform. Para usá-lo, você precisa configurar o aplicativo para visar uma plataforma específica, como x86 ou x64.To use it, you need to configure your application to target one specific platform such as x86 or x64.

Se você tiver vários projetos em sua solução, somente o projeto de ponto de entrada (provavelmente o projeto que produz um arquivo executável) precisará ser compilado como 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. Os binários adicionais referenciados do projeto principal serão processados com a arquitetura especificada no projeto principal, mesmo se eles forem compilados como 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.

Para configurar seu projeto:To configure your project:

  1. Clique com o botão direito do mouse na solução e selecione Gerenciador de Configurações.Right-click your solution, and then select Configuration Manager.

  2. Selecione <Novo...> no menu suspenso Plataforma ao lado do nome do projeto que produz o arquivo executável.Select <New ..> in the Platform dropdown menu beside the name of the project that produces your executable file.

  3. Na caixa de diálogo Nova Plataforma de Projeto, verifique se a lista suspensa Copiar Configurações de está definida como AnyCPU.In the New Project Platform dialog box, make sure that the Copy Settings from dropdown list is set to Any CPU.

Configure o x86

Repita essa etapa para Release/x64 se desejar produzir binários x64.Repeat this step for Release/x64 if you want produce x64 binaries.

Importante

A configuração AnyCPU não é compatível com o compilador de imagem nativa.AnyCPU configuration is not supported by the native image compiler.

Adicione os pacotes NuGetAdd the NuGet packages

O compilador de imagem nativa é fornecido como um pacote NuGet que você precisa adicionar ao projeto do Visual Studio que produz o arquivo executável.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. Isso normalmente é projeto WPF ou Windows Forms.This is typically your Windows Forms or WPF project. Use esse comando do PowerShell para fazer isso.Use this PowerShell command to do that.

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

Crie um build de lançamentoCreate a Release Build

O pacote NuGet configura o projeto para executar uma ferramenta adicional nos builds de lançamento.The NuGet package configures the project to run an additional tool for release builds. Essa ferramenta adiciona o código nativo aos mesmos binários.This tool adds the native code to the same binaries. Para verificar se a ferramenta processou os binários, é possível rever a saída do build para garantir que ele inclua uma mensagem como esta: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.

A compilação de imagem nativa pode ser acionada em builds que não sejam de lançamento ao definir a propriedade NgenR2R como true no arquivo do projeto.Native image compilation can be triggered on non-release builds by setting the property NgenR2R to true in the project file.

Perguntas frequentesFAQ

P. Os novos binários funcionam em computadores sem o .NET Framework 4.7.2?Q. Do the new binaries work on machines without .NET Framework 4.7.2?

A.A. Os binários otimizados vão se beneficiar das melhorias se forem executados com o .NET Framework 4.7.2.Optimized binaries will benefit from the improvements when running with .NET Framework 4.7.2. Os clientes com versões anteriores do .NET framework vão carregar o código MSIL não otimizado do binário.Clients that run previous .NET framework versions will load the non-optimized MSIL code from the binary.

P. Como posso fornecer comentários ou relatar problemas?Q. How can I provide feedback or report issues?

A.A. Informe um problema usando a ferramenta Comentários no Visual Studio 2017.Report an issue by using the Feedback tool in Visual Studio 2017. Mais informações.More information.

P. Qual é o impacto de adicionar a imagem nativa aos binários existentes?Q. What’s the impact of adding the native image to existing binaries?

A.A. Os binários otimizados contêm o código nativo e gerenciado, tornando os arquivos finais maiores.The optimized binaries contain the managed and native code, making the final files greater.

P. Posso lançar binários usando essa tecnologia?Q. Can I release binaries using this technology?

A.A. Essa versão inclui uma licença do Go Live que você pode usar hoje mesmo.This version includes a Go Live license that you can use today.