Чтобы ответить на этот вопрос, я считаю, что сначала нужно провести четкое различие между CLI и .NET:
CLI (сокращение от Инфраструктура общего языка ) является стандартом, и поэтому она разработана в основном для независимости от платформы .Здесь платформа относится к базовой компьютерной архитектуре, включая операционную систему.
Хотя возможно, что стандарт требует определенных вещей, которые невозможно реализовать на всех архитектурах (я имею в виду очень ограниченные платформы,такие как встроенные системы), но, возможно, их можно рассматривать как крайние случаи.
.NET является основной реализацией CLI от Microsoft и работает только в системах Windows.Поэтому .NET * не не зависит от платформы.
Обновление (август 2015 г.) : В конце 2014 г. Microsoft объявила, что планирует постепенно открывать исходные коды.части .NET Framework (особенно те части, которые относятся к серверным приложениям).В результате .NET Core от .NET Foundation .
.NET Core предназначен дляКроссплатформенная реализация CLI.
Mono также является реализацией CLI, но предназначена для работы на разных платформах, таких как Linux и Windows.Mono определенно более независим от платформы, чем .NET.
Во-вторых, существует проблема двоичной совместимости выходных данных компилятора.Поскольку стандарт CLI определяет формат файла (форма исполняемых файлов PE) и язык промежуточного кода (называемый CIL), который будет использоваться для сборок, вы можете свободно смешивать компоненты, написанные на VB.NET, C # и некоторых других языках, один раз, используя исходный код.был скомпилирован в CIL .
В этом смысле CLI (и вместе с ним все его соответствующие реализации, такие как .NET) не зависят от языка .
Интересно, что вы можете что-то скомпилировать с помощью компиляторов Microsoft .NET, и благодаря общему формату файла сборки, предписанному стандартом, вы сможете использовать сборку в проекте Mono - и наоборот.В этом смысле набор инструментов .NET можно считать независимым от платформы, но не сам .NET .Помните, что .NET Framework также включает в себя стандартную библиотеку, ориентированную на Windows (например, WPF).