I have one major question and two minor questions that are all related. Firstly, does ngen.exe actually compile to native exes that you can distribute? There is very little known about ngen.exe. Secondly, is there actually a way to compile .net to native x86 code even if they still depend on the .net framework. Lastly, with mono, can you compile to native code, by just 'chucking' your project from VS to mono?
Short answer: yes. When you start a .NET application that is not NGEN'ed, when you execute a method for the first time, it's compiled to native code. The .NET virtual machine doesn't execute MSIL, it only executes the native code. What NGEN does is that it does all of this work up front. See http://msdn.microsoft.com/en-us/library/6t9t5wcf(v=vs.80).aspx for more information.