[EDIT]
The paragraph below (indented) was initially written in response to first version of the question, which was later fixed by the inquirer:
The extension means next to nothing. Essentially, there is no such thing as "extension". It used to be a notion of obsolete Microsoft systems, but now this is mostly just a convention. If you change file name (".exe" is nothing but a file name), the Window shell wont recognize it, but you still can start the application programmatically. The function of a file is defined by its content, not name.
On Mac OS X, and other *NIX (Unix-like) systems, an executable file can have any file name, ".exe" or not.[END EDIT]
Now, there is a way to run .NET applications on many platforms, for the applications limited to some standard subset of .NET FCL, BCL + some non-standard libraries, with some limitations. The product common for Windows and Mac is Mono, an alternative CLR implementation:
http://en.wikipedia.org/wiki/Mono_%28software%29[
^],
http://www.mono-project.com/[
^].
With Mono, you can develop applications on Windows and run on Mono (Windows or other platforms)
without re-compliation. It works better on, say, Linux, and works but the UI looks quite foreign on Mac. If you want to follow authentic Mac's UI rules, you will need additional project which is installed on top on Mono and — attention! — replaced Mono's runtime command line:
http://en.wikipedia.org/wiki/Monobjc[
^],
http://www.monobjc.net/[
^].
You can also develop standad Mac OS X installation packages.
But with such UI, you will need to do a big part of development with real Mac OS X system.
—SA