CLR - это среда выполнения, в которой приложение .NET безопасно размещается / запускается.
Вы можете видеть его как частную операционную систему .NET, которая запускается и загружается непосредственно перед запуском приложения .NET.
CLR заботится об определенных основных требованиях любого приложения .NET, которые в противном случае потребовали бы написания большого количества преднамеренного кода для реализации; требования, которые являются целостными по своему характеру и необходимы для того, чтобы любое приложение работало качественно, эффективно и безопасно [например, Управляйте выделением памяти и освобождайте ее, когда это не требуется, избегайте висячих указателей, избегайте ошибок приведения типов и т. Д.] *
CLI, с другой стороны, представляет собой спецификацию / набор рекомендаций, объясняющих, как реализовать среду выполнения приложения, и характер сгенерированного кода приложения, который позволяет использовать несколько языков высокого уровня на разных компьютерных платформах без переписывания для конкретные архитектуры.
CLI разработан Microsoft и стандартизирован ISO и ECMA.
CLR представляет собой практическую реализацию раздела VES [Virtual Execution System] CLI и является одним из основных компонентов платформы MS.NET
На языке неспециалистов CLI - это рецепт, а CLR - кухня: -)