DotGNU Portable.NET FAQ: "Why doesn't my C/C application work that I built with Visual Studio.NET?
Usually, the C/C applications that are output by Visual Studio.NET are not pure IL binaries. They contain x86 native code, and depend on all kinds of Microsoft-specific libraries. Such applications will never work with a pure-IL engine such as 'ilrun'.
Apparently there are switches that can be supplied to Visual Studio.NET that force it to output pure-IL binaries. But even then, there will still be dependencies on other Microsoft libraries. Your mileage may vary.
Some people have suggested interfacing 'ilrun' to Wine so as to pick up many of the Windows dependencies. This may work, but we need someone to volunteer to do it first.
If your application is written in C, and does not depend upon Windows-specific features, then you can recompile it using the C language front-end for 'cscc'. The resulting binary is likely to be more portable than that produced by Visual Studio.NET.
Update: more recent versions of Visual Studio.NET apparently generate IL that is more pure. Your mileage may still vary though."