Задать вопрос

C# и ngen.exe: Как транслировать в машинный код?

Скажу сразу: мне не нужно отказываться от платформы .NET =)
И вопрос не о том, как получить независимый от фреймворка код.

Итак, есть весомое бизнес-приложение на C# с использованием Windows Forms.
В приложении десятки различных диалоговых окон под разные нужды, уведомления о событиях трее и контекстные меню.

По хорошей традиции всё это транслируется в машинный код во время исполнения и занимает время.
Первое открытие диалогового окна, появление контекстного меню, навигация по верхнему меню - всё это занимает время и вполне ощутимо подвисает.

Разумеется, после активной работы с приложением подтормаживания исчезают.
Но это повторяется раз за разом.

Вопрос:
Я читал, что с помощью утилиты ngen можно заранее на целевой машине транслировать байт-код в машинный. Поискал на MSDN, нашел парочку примеров, в том числе смотрел через ngen /?
Попробовал применить к сборке.

Утилита отрабатывает, но результата нет: работает как работало, с медленным запуском и подтормаживанием при первой работе.

А теперь вопрос: как ей правильно пользоваться, чтобы в итоге получить корректную сборку на целевой машине?
  • Вопрос задан
  • 5532 просмотра
Подписаться 3 Оценить Комментировать
Ответ пользователя Ilya Evseev К ответам на вопрос (3)
IlyaEvseev
@IlyaEvseev
Opensource geek
Альтернатива ngen: www.mono-project.com/AOT
Ответ написан
Комментировать