.Net C# is not more portable than C++. Let's not try to go around this issue making it more look more complicated or in a more favorable light than it is. C# serves well Microsoft based operating systems (server, desktop and mobile) and is barely bearable under Linux. And that's just it. It's a good language, it's a good framework. But it is not portable until someone builds a complete framework for the target system.
Macs don't have it, Linux only barely has it, many mobile devices don't have it, Solaris doesn't have it, etc etc etc. And yet, with C++ you can even program a PIC or a an old Z80 processor.
Let's please be more objective.