Mono значительно улучшил свою поддержку Ahead of Time compilation (AOT) до такой степени, что, предполагая, что вы готовы / способны ориентироваться на Mono, а не на среду выполнения .Net, должна быть возможность статической компиляции практически любого приложения CIL.
Является ли это хорошей идеей в целом, полностью зависит от приложения и ваших ограничений.
Например, Novell теперь поставляет MonoTouch, реализацию CLI, которая полностью скомпилирована и подключена к AOT, чтобы позволить приложениям .Net (а не только играм) работать на iPhone против инфраструктуры CocoaTouch.
Те же самые методы AOT могут использоваться для компиляции приложения Winforms, для которого в качестве предварительных условий не требуется среда выполнения .Net или Mono. Есть много компромиссов в производительности (как положительных, так и отрицательных), связанных с AOT, поэтому я бы не стал двигаться вперед без должной осмотрительности.
Edit:
В ответ на вопрос Джона Сондерса относительно «почему бы просто не установить его для них?». Это фактически вызывает одну причину, по которой вам может понадобиться компиляция AOT .. Bootstrappers.
Чтобы установить что-либо, вы должны запустить исполняемый файл. Вы можете распространять MSI (который запускает msiexec.exe неявно) или вы можете распространять исполняемый файл. MSI, хотя и функционален, - довольно ужасный опыт для разработчиков. Таким образом, вы можете создать загрузчик с помощью .NET (скомпилированный AOT исключает зависимость во время выполнения), который устанавливает все необходимые предварительные условия (например, .NET) перед установкой приложения.
Кроме того, некоторым компаниям может потребоваться поставка загружаемых исполняемых файлов, которые не требуют, чтобы пользователи что-либо устанавливали (в автоматическом режиме или иным образом).
Еще одно: для установки .NET требуются права администратора. AOT может позволить вам обойти это требование для вашего приложения.
Опять же, является ли что-то из этого хорошей идеей, полностью зависит от приложения и ваших ограничений.