Превращение исполняемого файла.NET в собственный исполняемый файл

Есть ли какой-нибудь подход к преобразованию приложения, разработанного в.NET, в собственный исполняемый файл (исходные коды включены)?

Установка всего фреймворка (до.NET Framework 3.5 SP1) занимает много времени - не всегда компьютеры обновляются из Интернета. Можно ли вызвать NGen для создания независимых исполняемых файлов?

Спасибо

11 ответов

Это еще не доступно, но команда проекта Mono работает над компилятором Ahead of Time, который будет делать то, что вы ищете. Предполагается, что Mono будет работать на iPhone (например, Unity), но он должен работать на всех платформах.

Изменить: Он поддерживает Mono x86, но я не уверен, что они включили функцию, которая упаковывает в зависимых классах еще (хотя из интервью, которое я слышал, это запланировано)

Редактировать 2: Включение зависимостей в настоящее время поддерживается, спасибо Dykam!

Нет, для кода NGen по-прежнему нужна инфраструктура - он только предварительно JIT-код в ваших собственных сборках. Это также требует основы для самого CLR.

Я считаю, что у Mono есть статический компилятор, который они планируют использовать для iPhone. Я не знаю, будет ли это работать на Windows, хотя.

Раньше был продукт под названием Thinstall, который некоторые люди использовали для этого. Теперь он называется ThinApp - в основном это виртуализация приложений. Он коммерческий, но вы вполне можете получить пробную версию.

Лично я был бы несколько обеспокоен любым таким продуктом - когда дело доходит до развертывания, отклонение от основного способа выполнения вещей звучит как рецепт для большого количества обращений в службу поддержки. Там очень много, чтобы пойти не так. Я не говорю, что это не работает, просто я буду осторожен.

Вы смотрели профиль клиента.NET 3.5 (SP1)? Это может помочь немного уменьшить ваши требования к установке.

С.net 3.5 SP1 можно установить меньшее подмножество.net framework. Посмотрите на этот снимок экрана: http://windowsclient.net/sitefiles/1000/wpf/presents/103_4.png

NGen компилирует exe-файлы в нативные exe-файлы, поэтому их не нужно компилировать JIT при запуске. Они все еще зависят от структуры, хотя.

Есть несколько коммерческих компаний, которые предоставляют продукты для компиляции сборок.net в автономные exe-файлы. Ксенокод и VMware в Thinapp. Хотя и не дешевые.

Вы можете использовать NGen, чтобы сделать ваше приложение собственным исполняемым, но оно все равно будет зависеть от.Net framework.

ThinApp (ранее Thinstall) от vmware. Раньше было очень дорого, хотя.

http://www.vmware.com/products/thinapp/

Почему не Ngen.exe? http://msdn.microsoft.com/en-us/library/6t9t5wcf(v=vs.80).aspx

Конвертирует .Net Programs в Native Programs также и у вас уже есть, если у вас есть.Net Framework

Единственный продукт, который мы создали для решения этой проблемы в 2007 году, был Xenocode Postbuild. С тех пор мы успешно используем этот продукт, а также используем его довольно хорошие функции виртуализации.

Единственная проблема заключается в том, что приобретенная нами версия не поддерживает Windows 7 (где вам не нужно устанавливать.net framework для запуска вашей программы, скомпилированной с версией < 4.0). Поэтому я написал в Xenocode. Они ответили

Чтобы получить поддержку для Win 7, вам необходимо обновить ее до последней версии Postbuild (теперь она называется .NET Obfuscator). Win 7 не поддерживается платформой для Postbuild 2007.

Некоторые Обфускаторы делают это, хотя вам придется сделать это заранее (прежде чем отправлять его своим пользователям). Примером является Саламандра Remotesoft.

Вам нужно будет только установить версию.NET, на которую вы нацелены, например.NET1.1 или.NET2.0

Редактировать: если вам нужно выбрать версию 3.5, вам нужно установить как 2.0, так и 3.5

ILMerge (Free) может объединять несколько сборок в одну, но я не думаю, что он работает с основными средами выполнения.

Короче говоря, я думаю, что если вы хотите запускать программы.NET, вам нужно установить.NET Framework.

Есть коммерческий продукт, который утверждает, что делает это здесь:

http://www.xenocode.com/Obfuscator/

"Безопасное развертывание приложений.NET без установки.NET Framework"

Понятия не имею, какими бы были недостатки этого

Другие вопросы по тегам