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

Время запуска приложения .NET Framework можно ускорить путем предварительной компиляции двоичных файлов. Эту технологию можно использовать для больших приложений, которые упаковываются, а затем распространяются через Microsoft Store. В некоторых случаях мы наблюдали повышение производительности на 20 %. Дополнительные сведения об этой технологии см. в этом техническом обзоре.

Мы выпустили компилятор собственных образов в виде пакета NuGet. Этот пакет можно применить к любому приложению .NET Framework, предназначенному для .NET Framework версии 4.6.2 и более поздних версий. Этот пакет добавляет шаг после сборки, который включает собственные полезные данные во все двоичные файлы, используемые приложением. Эти оптимизированные полезные данные будут загружены при запуске приложения на платформе .NET версии 4.7.2 и более поздних версий, в то время как предыдущие версии будут по-прежнему загружать код MSIL.

.NET Framework 4.7.2 входит в обновление для Windows 10 от апреля 2018 г. Эту версию .NET Framework можно также установить на компьютерах под управлением Windows 7+, а также Windows Server 2008 R2 и более поздних версий.

Важно!

Если вы хотите создавать собственные образы для приложения, упаковываемого в рамках проекта упаковки приложений Windows, обязательно установите самую раннюю версию целевой платформы для юбилейного обновления Windows.

Инструкции по созданию собственного образа

Выполните следующие действия, чтобы настроить свои проекты.

  1. Настройка целевой платформы 4.6.2 или более поздней версии.

  2. Настройка целевой платформы x86 или x64.

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

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

Настройка целевой платформы 4.6.2 или более поздней версии

Чтобы настроить проект для целевой платформы .NET Framework 4.6.2, вам потребуются средства разработки .NET Framework 4.6.2 или более поздней версии. Эти средства доступны в установщике Visual Studio в виде дополнительных компонентов рабочей нагрузки для разработки классических приложений на .NET.

Install .NET 4.6.2 development tools

Кроме того, можно получить пакеты для разработчиков .NET по этой ссылке: https://www.microsoft.com/net/download/visual-studio-sdks

Настройка целевой платформы x86 или x64

Компилятор собственных образов оптимизирует код для заданной платформы. Чтобы использовать компилятор, необходимо настроить приложение для работы с одной конкретной платформой, например x86 или x64.

Если в решении несколько проектов, то только проект с точками входа (скорее всего, проект, создающий исполняемый файл) должен быть скомпилирован как x86 или x64. Дополнительные двоичные файлы, на которые ссылается основной проект, будут обрабатываться с использованием архитектуры, указанной в основном проекте, даже если они компилируются как AnyCPU.

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

  1. Щелкните правой кнопкой решение и выберите пункт Диспетчер конфигураций.

  2. Выберите <Создать…> в раскрывающемся меню Платформа рядом с именем проекта, который создает исполняемый файл.

  3. В диалоговом окне Создание платформы проекта в раскрывающемся списке Копировать параметры из обязательно установите флажок Любой ЦП.

Configure x86

Повторите этот шаг для Release/x64, если требуется создать двоичные файлы x64.

Важно!

Конфигурацию AnyCPU не поддерживает компилятор собственных образов.

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

Компилятор собственных образов предоставляется в виде пакета NuGet, который необходимо добавить в проект Visual Studio, создающий исполняемый файл. Обычно это проект WPF или Windows Forms. Используйте для этого команду PowerShell.

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

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

Пакет NuGet настраивает проект для запуска дополнительного средства для сборок выпуска. Это средство добавляет собственный код в те же двоичные файлы. Чтобы убедиться, что средство обработало двоичные файлы, можно проверить выходные данные сборки и убедиться в наличии следующего сообщения:

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.

ВОПРОСЫ И ОТВЕТЫ

У. Работают ли новые двоичные файлы на компьютерах без .NET Framework 4.7.2?

A. Оптимизированные двоичные файлы помогут улучшить работу при выполнении на платформе .NET Framework 4.7.2. Клиенты, которые работают с предыдущими версиями .NET Framework, будут загружать неоптимизированный код MSIL из двоичного файла.

У. Как отправить отзыв или сообщить о возникающих проблемах?

A. Сообщайте о проблемах с помощью средства обратной связи в Visual Studio 2017. Дополнительные сведения.

У. Как влияет добавление собственного образа в существующие двоичные файлы?

A. Оптимизированные двоичные файлы содержат управляемый и собственный код, что увеличивает размеры окончательных файлов.

У. Можно ли осуществить выпуск двоичных файлов с помощью этой технологии?

A. Эта версия включает лицензию для ввода в эксплуатацию, которую можно использовать уже сейчас.