Is there any approach to convert an application developed in .NET into a native executable (sources are included)?

Installing the whole framework (up to .NET Framework 3.5 SP1) takes a lot of time - not always the computers are updated from the internet. Is it possible to call NGen in order to produce independent executables?

11 Answers
11

It's not available yet, but the Mono project team are working on an Ahead of Time compiler that will do what you are looking for. The intention is for Mono to work on the iPhone (like Unity) but it should work for all platforms.

Edit: It does support Mono x86, but I'm not sure if they have included the feature that packs in dependent classes yet (though from an interview I heard, it's planned)

The aot does work for a time already. I don't get what you mean with dependent classes. If you mean including referenced dll's, that is surely supported, as the bcl has to be compiled into the resulting executable too. Note that reflection and related is not available.
–
DykamJul 27 '09 at 13:17

Thanks Dykam. It may have been that optimisation of that process (ie. only including necessary classes and/or methods) that was mentioned as not being ready.
–
Richard SzalayJul 27 '09 at 13:22

No, NGen'd code still needs the framework - it only pre-JITs the code in your own assemblies. It also requires the framework for the CLR itself.

I believe Mono has a static compiler which they're planning on using for the iPhone. I don't know whether that will work on Windows as well though.

There used to be a product called Thinstall which some people used for this. It's now called ThinApp - basically it's application virtualisation. It's commercial, but you may well be able to get hold of a trial version.

Personally I'd be somewhat concerned about any such product - when it comes to deployment, veering away from the mainstream way of doing things sounds like a recipe for lots of support calls. There's just an awful lot to go wrong. I'm not saying it doesn't work, just that I'd be wary.

The only product we founded to solve the problem in 2007 was Xenocode Postbuild. From that time we use this product successfully, we use also its pretty good virtualization features.

The only problem is that the version we purchased don't support the Windows 7 (where you don't need to install .net framework to run your program compiled with version < 4.0). So I wrote to Xenocode. They answered

In order to get support for Win 7 you should upgrade to the newest version of Postbuild (now called .NET Obfuscator). Win 7 is not a supported platform for Postbuild 2007.