Есть ли работа по созданию компилятора C # для создания нативных исполняемых файлов? - PullRequest
6 голосов
/ 21 января 2009

Есть ли работа по созданию компилятора C # для создания нативных exe-файлов? например выходной файл - это исполняемый файл, а не сборка .NET.

Ответы [ 6 ]

2 голосов
/ 21 января 2009

Почему бы вам не попробовать NGen. Например, Paint.NET использует nGen для создания собственных образов после установки.

2 голосов
/ 21 января 2009

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

1 голос
/ 21 января 2009

Есть два активных проекта. Они ориентированы на операционные системы на основе CIL, но текущая итерация MOSA Compiler Framework работает в Windows (модульные тесты и т. Д.) И имеет ограниченную поддержку загрузки. Раньше у Cosmos была архитектура Windows и несколько разъемов, но они больше не работают с Windows - только загружаются в среду CIL.

Космос намного дальше, однако, у них есть в значительной степени прибитая поддержка объектов. MOSA на данный момент является только голым металлом (статические методы) - хотя это сделано «правильным» способом и хорошо протестировано модульно (и я думаю, что прогресс будет быстрее). Дайте ему еще несколько месяцев, а затем вернитесь и посмотрите.

В данный момент у JITER нет JIT (что не имеет значения, поскольку вы его не хотите). Все это заранее скомпилировано в машинный код.

1 голос
/ 21 января 2009

.NET linker

Возможно, вам будет интересно прочитать: Внутренние компоненты .NET и собственная компиляция .

Обратите внимание, что для работы отражения всегда нужно будет предоставить много информации о коде.

1 голос
/ 21 января 2009

Вам все равно придется предоставлять библиотеки в какой-либо форме, так что либо вам все равно нужно установить среду выполнения, либо собственный exe-файл должен быть огромным.

1 голос
/ 21 января 2009

Существует такое решение для Mono, это mkbundle - статическое связывание вместо использования JIT / CLR / GAC, я думаю

...