Оптимизация классических приложений .NET с помощью собственных образовOptimize your .NET desktop apps with native images

Время запуска приложения .NET Framework можно ускорить путем предварительной компиляции двоичных файлов.You can improve the startup time of your .NET Framework application by pre-compiling your binaries. Эту технологию можно использовать для больших приложений, которые упаковываются, а затем распространяются через Microsoft Store.You can use this technology on large applications that you package and distribute through the Microsoft Store. В некоторых случаях мы наблюдали повышение производительности на 20 %.In some cases, we've observed a 20% performance improvement. Дополнительные сведения об этой технологии см. в этом техническом обзоре.You can learn more about this technology in the technical overview.

Мы выпустили компилятор собственных образов в виде пакета NuGet.We've released the native image compiler as a NuGet package. Этот пакет можно применить к любому приложению .NET Framework, предназначенному для .NET Framework версии 4.6.2 и более поздних версий.You can apply this package to any .NET Framework application that targets the .NET Framework version 4.6.2 or later. Этот пакет добавляет шаг после сборки, который включает собственные полезные данные во все двоичные файлы, используемые приложением.This package adds a post build step that includes a native payload to all the binaries used by your application. Эти оптимизированные полезные данные будут загружены при запуске приложения на платформе .NET версии 4.7.2 и более поздних версий, в то время как предыдущие версии будут по-прежнему загружать код 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 входит в обновление для Windows 10 от апреля 2018 г.The .NET framework 4.7.2 is included in the Windows 10 April 2018 update. Эту версию .NET Framework можно также установить на компьютерах под управлением Windows 7+, а также 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+.

Важно!

Если вы хотите создавать собственные образы для приложения, упаковываемого в рамках проекта упаковки приложений Windows, обязательно установите самую раннюю версию целевой платформы для юбилейного обновления 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.

Инструкции по созданию собственного образаHow to produce native images

Выполните следующие действия, чтобы настроить свои проекты.Follow these instructions to configure your projects.

  1. Настройка целевой платформы 4.6.2 или более поздней версии.Configure the target framework as 4.6.2 or above

  2. Настройка целевой платформы x86 или x64.Configure the target platform as x86 or x64

  3. Добавление пакетов NuGet.Add the NuGet packages.

  4. Создание сборки выпуска.Create a Release Build.

Настройка целевой платформы 4.6.2 или более поздней версииConfigure the target framework as 4.6.2 or above

Чтобы настроить проект для целевой платформы .NET Framework 4.6.2, вам потребуются средства разработки .NET Framework 4.6.2 или более поздней версии.To configure your project to target .NET Framework 4.6.2 you will need the .NET Framework 4.6.2 development tools or newer. Эти средства доступны в установщике Visual Studio в виде дополнительных компонентов рабочей нагрузки для разработки классических приложений на .NET.These tools are available through the Visual Studio installer as optional components under the .NET desktop development workload:

Установка средств разработки .NET 4.6.2

Кроме того, можно получить пакеты для разработчиков .NET по этой ссылке: 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

Настройка целевой платформы x86 или x64Configure the target platform as x86 or x64

Компилятор собственных образов оптимизирует код для заданной платформы.The native image compiler optimizes the code for a given platform. Чтобы использовать компилятор, необходимо настроить приложение для работы с одной конкретной платформой, например x86 или x64.To use it, you need to configure your application to target one specific platform such as x86 or x64.

Если в решении несколько проектов, то только проект с точками входа (скорее всего, проект, создающий исполняемый файл) должен быть скомпилирован как x86 или 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. Дополнительные двоичные файлы, на которые ссылается основной проект, будут обрабатываться с использованием архитектуры, указанной в основном проекте, даже если они компилируются как 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.

Чтобы настроить проект, выполните шаги ниже:To configure your project:

  1. Щелкните правой кнопкой решение и выберите пункт Диспетчер конфигураций.Right-click your solution, and then select Configuration Manager.

  2. Выберите пункт <Создать …> в раскрывающемся меню Платформа рядом с именем проекта, который создает исполняемый файл.Select <New ..> in the Platform dropdown menu beside the name of the project that produces your executable file.

  3. В диалоговом окне Создание платформы проекта в раскрывающемся списке Копировать параметры из обязательно установите флажок Любой ЦП.In the New Project Platform dialog box, make sure that the Copy Settings from dropdown list is set to Any CPU.

Настройка архитектуры x86

Повторите этот шаг для Release/x64, если требуется создать двоичные файлы x64.Repeat this step for Release/x64 if you want produce x64 binaries.

Важно!

Конфигурацию AnyCPU не поддерживает компилятор собственных образов.AnyCPU configuration is not supported by the native image compiler.

Добавление пакетов NuGetAdd the NuGet packages

Компилятор собственных образов предоставляется в виде пакета NuGet, который необходимо добавить в проект Visual Studio, создающий исполняемый файл.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. Обычно это проект WPF или Windows Forms.This is typically your Windows Forms or WPF project. Используйте для этого команду PowerShell.Use this PowerShell command to do that.

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

Создание сборки выпускаCreate a Release Build

Пакет NuGet настраивает проект для запуска дополнительного средства для сборок выпуска.The NuGet package configures the project to run an additional tool for release builds. Это средство добавляет собственный код в те же двоичные файлы.This tool adds the native code to the same binaries. Чтобы убедиться, что средство обработало двоичные файлы, можно проверить выходные данные сборки и убедиться в наличии следующего сообщения: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.

Native image compilation can be triggered on non-release builds by setting the property NgenR2R to true in the project file.Native image compilation can be triggered on non-release builds by setting the property NgenR2R to true in the project file.

Вопросы и ответыFAQ

Вопрос. Работают ли новые двоичные файлы на компьютерах без .NET Framework 4.7.2?Q. Do the new binaries work on machines without .NET Framework 4.7.2?

А)A. Оптимизированные двоичные файлы помогут улучшить работу при выполнении на платформе .NET Framework 4.7.2.Optimized binaries will benefit from the improvements when running with .NET Framework 4.7.2. Клиенты, которые работают с предыдущими версиями .NET Framework, будут загружать неоптимизированный код MSIL из двоичного файла.Clients that run previous .NET framework versions will load the non-optimized MSIL code from the binary.

Вопрос. Как отправить отзыв или сообщить о возникающих проблемах?Q. How can I provide feedback or report issues?

А)A. Сообщайте о проблемах с помощью средства обратной связи в Visual Studio 2017.Report an issue by using the Feedback tool in Visual Studio 2017. См. дополнительные сведения.More information.

Вопрос. Как влияет добавление собственного образа в существующие двоичные файлы?Q. What’s the impact of adding the native image to existing binaries?

А)A. Оптимизированные двоичные файлы содержат управляемый и собственный код, что увеличивает размеры окончательных файлов.The optimized binaries contain the managed and native code, making the final files greater.

Вопрос. Можно ли осуществить выпуск двоичных файлов с помощью этой технологии?Q. Can I release binaries using this technology?

А)A. Эта версия включает лицензию для ввода в эксплуатацию, которую можно использовать уже сейчас.This version includes a Go Live license that you can use today.