Преобразование приложения .NET в собственный код x86

Там'Это программа, полностью написанная на C # и предназначенная для .NET Framework 2.0. Есть ли способ, которым я мог бы каким-то образом скомпилировать (перевести) управляемый EXE-файл в нативный, чтобы он мог быть .NET-независимым? Я знаю, что, вероятно, есть коммерческие продукты для этой цели ... но они немного дороже.

Проблема в том, что мы должны развернуть программу на компьютерах под управлением Windows XP без установленного .NET Framework. Там'Также требуется, чтобы программаРазмер файла не должен превышать 500 КБ (максимум 1 МБ), поскольку он загружается с веб-сервера (теперь его размер составляет 255 КБ). Вот почемумы никак не можем подключить полноценный .NET FX (или даже уменьшенный) к загруженной программе ».с файлом.

Очевидно, что это ужасная ошибка разработки программного обеспечения, которую следовало бы обнаружить и избежать раньше, чтобы вместо этого мы могли использовать нативные технологии, такие как C ++.

Мы попробовали пока Novell 'Mono - реализация с открытым исходным кодом .NET Framework для Linux, MAC и Windows. Mono состоит из компилятора C #, IDE, среды выполнения (CLR) и библиотек классов (например, System.dll и mscorlib.dll - очень похоже на .NET ').Сборки библиотеки классов, установленные в GAC). Мы пытались найти файлы CLR и отправить их вместе с нашей программой ».S файл и несколько сборок. Таким образом, программу можно запустить, запустив "mono program.exe " (командная строка) на пользователя 'с компьютера. В дополнение к неудобству такого использования файлов CLR для конечного пользователя (mono.exe и mono.dll) в общей сложности оказалось около 2,5 МБ, что намного больше, чем требуемые 500 КБ или даже 1 МБ.

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

На данный момент я наткнулся на проект ОС Singularity от Microsoft Research. Это исследовательская ОС с открытым исходным кодом, написанная в управляемом коде (по крайней мере, частично). ОС Singularity OS включает в себя компилятор Bartok, который ОС использует для перевода управляемой программы в собственную (32-разрядную версию x86). Следует отметить, что Барток можетПеревести все аспекты .NET 2.0 в нативный код, но большинство из них. Однако я не имеюЯ еще не научился использовать Сингулярность ...

Я был бы очень признателен вам, если бы вы могли дать мне несколько полезных советов и советов относительно этой проблемы, вашего собственного опыта работы с ОС Singularity и Bartok Compiler или других подходов к проблеме, которую я пропустил, и путей ее решения.

Заранее большое спасибо!

Наконец, используя Mono 'Полная функция AOT (на Callum Rogers ' совет) яудалось создать файл program.exe.dll, в котором отсутствует заголовок интерфейса командной строки. Так это выглядит для меня как родной dll. Однако я могуНе могу понять, как преобразовать эту dll в exe или сделать ее работоспособной. Также эта длл неКажется, что он представляет какие-либо интересующие функции, такие как основная функция.

Ответы на вопрос(5)

Ваш ответ на вопрос