Strictly speaking, platform-independent is not .NET, but CLI. Please see:
http://en.wikipedia.org/wiki/Common_Language_Infrastructure[
^].
.NET can be considered as one of the available implementations, which execution system is CLR:
http://en.wikipedia.org/wiki/Common_Language_Runtime[
^].
This stuff is standardized under ECMA:
http://msdn.microsoft.com/en-us/vstudio/Aa569283.aspx[
^].
Other implementations include open-source Mono (multi-platform itself), and Portable.NET:
http://en.wikipedia.org/wiki/Mono_(software)[
^],
http://en.wikipedia.org/wiki/Portable.NET[
^].
In practice, it means that you can run a sub-set of Microsoft applications (written very accurately, following the standards, avoiding non-standard exceptions which still can be used with care, some of them) on other platforms
without recompilation, which is, of course, possible due to JIT.
But .NET itself is also promised by Microsoft to become truly open-source and truly cross-platform:
http://news.microsoft.com/2014/11/12/microsoft-takes-net-open-source-and-cross-platform-adds-new-development-capabilities-with-visual-studio-2015-net-2015-and-visual-studio-online/[
^].
To me, it sounds like really great news. Let's see…
—SA