This is not as simple. .NET is just one implementation of CLR (
http://en.wikipedia.org/wiki/Common_Language_Runtime[
^]). CLR is standardized and is implemented on a number of different platforms, mostly via Mono:
http://en.wikipedia.org/wiki/Mono_%28software%29[
^],
http://www.mono-project.com/Main_Page[
^].
There are some more, more or less complete CLR implementations.
Microsoft Singularity:
http://en.wikipedia.org/wiki/Singularity_%28operating_system%29[
^],
http://research.microsoft.com/en-us/projects/singularity/[
^];
Cosmos:
http://en.wikipedia.org/wiki/Cosmos_%28operating_system%29[
^],
http://cosmos.codeplex.com/[
^];
SharpOS:
http://en.wikipedia.org/wiki/SharpOS_%28operating_system%29[
^],
http://www.sharpos.org/[
^];
ETH Zurich — Microsoft Research Barrelfish:
http://en.wikipedia.org/wiki/Barrelfish[
^],
http://www.barrelfish.org/[
^].
Microsoft Midori (code name):
http://en.wikipedia.org/wiki/Midori_%28operating_system%29[
^].
You should understand that .NET applications confined to the use of standard only (BCL, in particular), run on all those platforms (or will run)
without re-compilation.
Now, everything else is reduced to terminology. If people were calling all of the above ".NET", the answer would be that it is a cross-platform system or itself can serve as a platform. However, it so happens that the name ".NET" is reserved
for narrower set of products. "Platform-independent" would not be right in all cases. Behavior always depends on platform (imagine the application which should print platform name; of course, the result will depend on platform :-)), but the applications can behave in a highly platform-compatible way.
—SA