Подтвердить что ты не робот

Статическая компиляция в мире .NET

Я напишу небольшое настольное приложение для клиента с компьютерами WinXP, и они не будут устанавливать платформу .NET(по крайней мере, не для меня).

Таким образом, мои выборы ограничены либо С++, либо VB6, ни один из которых не звучит великолепно. Я помню, как читал в тот день, когда Mono придумал статический компилятор, но в последнее время единственное, что я смог найти, это запись Мигеля де Иказы в статической компиляции для игрового движка для запуска приложения на iPhone - не то, что я имел в виду.

Есть ли какие-либо продукты, бесплатные или коммерческие, которые позволят мне статически компилировать мое приложение winnet 3.5.

Спасибо

4b9b3361

Ответ 1

Вы можете попытаться использовать Remotesoft Salamander.

Он делает именно то, что вы хотите.

Ответ 2

Mono значительно улучшило поддержку компиляции Ahead of Time (AOT) до того момента, когда, предполагая, что вы готовы/можете настроить таргетинг на Mono, а не на время выполнения .NET, должно быть возможно статически компилировать практически любое приложение CIL.

Является ли это хорошей идеей, полностью зависит от приложения и ваших ограничений.

Например, Novell теперь отправляет MonoTouch, реализацию CLI, которая полностью компилируется и привязана к AOT, чтобы позволить приложениям .Net(а не только играм) работать на iPhone с каркасом CocoaTouch.

Те же самые методы AOT могут использоваться для компиляции приложения Winforms, которое не требовало бы .Net или Mono runtime в качестве предварительных условий. Существует много компромиссов с производительностью (как положительных, так и отрицательных), связанных с AOT, поэтому я не буду двигаться вперед без должной осмотрительности.


Edit:

В ответ на вопрос Джона Сондерса относительно "почему бы просто не установить его для них?". Это фактически вызывает одну причину, по которой вам может понадобиться компиляция AOT.. Bootstrappers.

Чтобы установить что-либо, вы должны запустить исполняемый файл. Вы можете либо распространять MSI (который будет запускать msiexec.exe неявно), либо вы можете распространять exe. MSI, хотя и функциональный, является довольно ужасным опытом разработчиков. Таким образом, вы можете создать свой загрузочный скрипт с помощью .NET(AOT скомпилировал исключение зависимости от времени выполнения), который устанавливает все необходимые предварительные условия (например,.NET) перед установкой приложения.

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

Еще одно: для установки .NET требуются административные привилегии. AOT может позволить вам обойти это требование для вашего приложения.

Опять же, будет ли любая идея хорошей идеей полностью зависит от приложения и ваших ограничений.