Связать.NET dlls для запуска приложения в машине.NET меньше?

AFAIK, ngen превращает MSIL в собственный код (также отнесенный в как предварительный JIT), однако я никогда не обращал слишком много внимания в, он - влияние выполнения запуска. Приложения Ngen'd все еще требуют библиотек базовых классов.NET (время выполнения).

Так как библиотеки базовых классов имеют все, в чем наши блоки.NET нуждаются (корректный?) было бы возможно поставить DLLs платформы с моим ngen'd приложением так, чтобы это не требовало, чтобы время выполнения было установлено? (например, сценарий для большинства машин Windows XP)

О, и не потрудитесь упоминать Компоновщика Саламандры Remotesoft или Постсборку Xenocode. Они не для моего (и многие), текущий бюджет (и они, кажется, просто связывают платформу в виртуализированном enviroinment, что означает большие размеры загрузки и медленные времена запуска, которым я верю),

Править:
Я знаю теперь, ngen не делает то, что я думал, что он сделал.
Но действительно ли возможно связать файлы.NET приложением, не используя VM?

7
задан JasonMArcher 5 September 2014 в 05:38
поделиться

3 ответа

Нген работает не так. Он только обходит этап JIT-компиляции. Полученный файл .ni.dll содержит только машинный код, но не метаданные сборки. Для этого вам необходимо сохранить оригинальную сборку. А сборки CLR и .NET framework должны быть доступны на целевой машине, что требует установки .NET.

2
ответ дан 7 December 2019 в 01:19
поделиться

Вы не можете этого сделать. Многие важные компоненты, такие как сборщик мусора, являются частью среды CLR (которая является частью среды выполнения), поэтому для успешного выполнения приложения вам потребуется установленная среда.

5
ответ дан 7 December 2019 в 01:19
поделиться

См. Как скомпилировать приложение .NET в родной код? - консенсус, похоже, таков, что это невозможно.

1
ответ дан 7 December 2019 в 01:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: