Промежуточный язык Microsoft (Microsoft Intermediate Language — MSIL, или просто IL) определяет систему команд, которая используется всеми компиляторами, транслирующими на язык платформы .NET. Этот промежуточный язык не зависит от используемой платформы. Код на языке MSIL затем преобразуется во внутренний (собственный) код платформы.
IL — язык более высокого уровня в сравнении с большинством других машинных языков. Он позволяет работать с объектами и имеет команды для создания и инициализации объектов, вызова виртуальных методов и непосредственного манипулирования элементами массивов. Он даже имеет команды генерации и захвата исключений для обработки ошибок. IL можно рассматривать как объектно-ориентированный машинный язык.
IL открывает доступ ко всем возможностям CLR. IL не привязан к какой-либо конкретной аппаратной платформе. Это значит, что управляемый модуль, содержащий IL-код, может исполняться на любой аппаратной платформе. Разработка приложений с управляемым IL делает программиста более независимым от архитектуры процессора.
Язык IL имеет все недостатки, которые присущи другим низкоуровневым языкам программирования: сложность и высокую трудоемкость программирования, трудность модификации написанных на нем программ, малую степень «видимого» соответствия исходного текста программы и решаемой задачи.
Ввиду своей ненаглядности, IL практически не используется для программирования комплексных алгоритмов. При этом IL позволяет достичь высокой оптимальности кода: программные блоки, написанные на IL, имеют высокую скорость исполнения и наименее требовательны к ресурсам контроллера.