Как запустить nGen в конце установки (MSI)?
Я хотел бы выполнить nGen в конце моей установки просто для улучшения воспринимаемой производительности первого запуска моего приложения. Как я мог это сделать? Есть ли передовая практика? Могу ли я быть уверенным, что nGen всегда установлен с .NET Framework?
Спасибо!
Ответы
Ответ 1
Вы можете создать свою сборку, используя специальное действие установщика. Следующие ссылки объясняют это более подробно:
http://www.dotnetperls.com/ngen
http://www.bobpowell.net/prejit.htm
Я также могу вспомнить хорошее обсуждение установщика Paint.NET(который включает загрузку .NET Framework, предварительную JITting и т.д.), но я не могу найти его в данный момент. Я отредактирую этот пост, если снова встречу его.
Ответ 2
Прежде всего, "Да", вы можете гарантировать, что если у них установлена инфраструктура .Net, у них есть Ngen. Единственное, что вам нужно знать, - это какая версия, которую они установили, поскольку она отличается от 1.1 и 2.0. То, что я делал в прошлом, просто создало script, который мой установщик вызывает в самом конце, который запускает ngen на всех сборках.
Ответ 3
Этот пост в блоге должен быть полезен.
Изменить. Поскольку вы не используете Wix, тогда this также может быть полезен.
Ответ 4
Чтобы улучшить воспринимаемую производительность при запуске, взгляните на статику в своем приложении. Многие статики могут вызвать значительное количество накладных расходов при запуске приложения.
Кроме того, рассмотрите возможность иметь только свою основную форму в EXE и все остальное в отдельной DLL. Это не только улучшает производительность, но и помогает в том, чтобы отделить представление от данных.
Наконец, если ваш набор в NGENing, посмотрите на помощь по выполнению пользовательских действий в MSI. Вы должны иметь возможность настраивать собственное действие, чтобы делать то, что вы хотите.
Ответ 5
Как говорит Micah, Да, вы найдете NGen, установленную с .Net Framework.
Взгляните на примеры установщика WiX 3.5, как настроить свои сборки во время установки.
NGen: Создание проектов установки
Надеюсь, это поможет вам.
Ответ 6
Запустить ngen.exe
:
>ngen install c:\myfiles\MyAssembly.exe