NGEN используется для компиляции кода .NET в двоичный код, который не потребует .NET Framework, которая будет установлена ​​при запуске кода?

StackOverflow https://stackoverflow.com/questions/3173116

  •  02-10-2019
  •  | 
  •  

Вопрос

Я прочитал следующий параграф на статье Википедии о CLR:

Альтернативно, код CIL может быть скомпилирован на нативный код на отдельном шаге до времени выполнения, используя собственный генератор изображения (NGEN). Это ускоряет все более поздние пробеги программного обеспечения, так как компиляция CIL-ato-atration больше не требуется.

Значит ли это, что я могу взять любую программу .NET и компилируйте ее к бинарному двору, который сможет работать на машине, который не установлен .NET Framework?

Это было полезно?

Решение

Нет.

Это означает, что вам не нужно будет запускать компилятор JIT (Roud-Time), когда вы запустите код, поскольку он уже преобразован в машинный код по NGEL. Полученные двоичные файлы все еще имеют зависимости от .NET Framework, и это должно быть установлено отдельно на машине.

Существуют инструменты, которые упаковывают .NET Framework Casslies и включают их в свои двоичные файлы таким образом, которым не требуется .NET Framework. Проверить http://www.xenocode.com/. Отказ VMware купил инструмент под названием Thinstall, который, я думаю, также может сделать это: http://www.vmware.com/products/thinapp/.

Другие советы

Чтение MSDN страница Для Ngen, где он говорится:

Ngen.exe создает нативные изображения, которые являются файлами, содержащими скомпилированные процессор-специфичный машинный код, и устанавливает их в кэш нативного изображения на локальном компьютере. Время выполнения может использовать собственные изображения из кэша вместо этого, используя компилятор Roud-Time (Jit) для компиляции исходной сборки.

значит (для меня), что Ngen просто делает то, что делает Compiler JIT и сохраняет результаты. Это ничего не говорит о включении .NET Runtimes в двоичных файлах.

ИНГЕНЬ, просто компилирует ваш код. Это не статически связано с всей .NET Framework в нее.

Моно, однако, делает есть статический компилятор и линкер, который может сделать это. Вот например, как работает поддержка iPhone Mono.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top