Применяет ли система прекомпиляцию для сборок, которые добавляются в GAC. Или же нужно дополнительно запускать ngen?
Здравствуйте, Shmj, Вы писали:
S>>Применяет ли система прекомпиляцию для сборок, которые добавляются в GAC. Или же нужно дополнительно запускать ngen?
S>Не делает, а напрасно...
Делает вообще-то. Другой вопрос, что нынче в gac сборки запихивать комильфо только для энтерпрайз-софта. В моде zero footprint, non-admin install, вот это всё.
Здравствуйте, Sinix, Вы писали:
S>Делает вообще-то. Другой вопрос, что нынче в gac сборки запихивать комильфо только для энтерпрайз-софта. В моде zero footprint, non-admin install, вот это всё.
Можешь подсказать, насколько актуальны эти данные?
1. Никогда не видел, не слышал, не сталкивался с фоновыми NGEN'ами.
2. Все *.ni.dll сборки, которые я вижу созданы собственноручно.
3. Несмотря на установку в GAC здоровенная 10-мегабайтная сборка сериализации при каждом запуске тратит до 20 секунд на JIT-компиляцию, пока на неё вручную не натравишь ngen.exe
4. Относится ли это к серверным платформам, новым версия .NET, новым версиям ОС?
5. Значит ли это, что эра ручной генерации Native Image ушла в прошлое и теперь этого не нужно делать никогда?
Здравствуйте, LWhisper, Вы писали:
LW>Можешь подсказать, насколько актуальны эти данные?
Auto ngen никуда не делся, но документирован никак от слова совсем. Пашет для win8 и 10.
Для траблшутинга можно смотреть лог нгена, в %windir%\Microsoft.NET\Framework64\v4.0.30319\ngen.log.
таски ".NET Framework NGEN v4.0.30319" в планировщике, для них надо врубить логирование.
и
вот эту ссылку.
Как оно работает —
тынц.
LW>3. Несмотря на установку в GAC здоровенная 10-мегабайтная сборка сериализации при каждом запуске тратит до 20 секунд на JIT-компиляцию, пока на неё вручную не натравишь ngen.exe
Нужно смотреть логи ngen-а и задач. Если Ngen не запускался планировщиком — всё понятно как бы. Если запускался — проверяем, есть ли ваша сборка в файлах в
%localappdata%\Microsoft\CLR_*\UsageLogs
если есть — это шикарный вопрос для stackoverflow
LW>5. Значит ли это, что эра ручной генерации Native Image ушла в прошлое и теперь этого не нужно делать никогда?
Ну... если есть инсталлятор — почему бы не запустить явно
В остальном — да, Ngen как правило используют в основном большие и тяжёлые приложения, ну и сам fw, конечно.