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

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

Вопрос

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

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

Спасибо

Нет правильного решения

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

Он пока недоступен, но команда проекта Mono работает над Компилятор опережающего времени это сделает то, что вы ищете.Цель состоит в том, чтобы Mono работал на iPhone (как и Unity), но он должен работать и на всех платформах.

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

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

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

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

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

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

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

С .net 3.5 SP1 можно установить меньший набор рамок .net. Посмотрите на этот скриншот:
<Суб> (источник: windowsclient.net )

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

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

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

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

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

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

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

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

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

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

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

Хотя понятия не имею, какие у этого будут недостатки

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

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

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

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

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

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

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

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