I'd have to disagree. An .exe will only work for the framework it was developed for - a Windows .exe is unlikely to be executable on Linux for example. This is why Java is advantageous with the JRE, so the bytecode can be dynamically interpreted by the host system. This takes the specific architecture away from the developer, making applications more portable. This is one of the advantages that Java has over C# (which will only run to its full extent on a Windows machine). The .NET framework also uses the MIL, so its taking the same approach to the interpreter as Java does.
This of course, ignores emulations like cygwin and wine. If you want to make executable files, use C/C++.
header('HTTP/1.1 420 Enhance Your Calm');