Программы для платформы .NET Framework распространяются в виде так называемых сборок. Каждая сборка представляет собой совокупность метаданных, описывающих типы, и CIL-кода.
Основной задачей программиста является написание исходного текста программы на одном из языков программирования. Для этого он использует уже готовые программные коды (библиотеки), написанные как им самим, так и другими разработчиками. Эти коды в платформе .NET Framework называются сборками.
Сборка – это единица повторного использования кода, которая может быть подключена на время исполнения кода. Файл сборки называется управляемым. Сборка, на ряду с программным CIL кодом, содержит метаданные и данные (ресурсы), необходимые при использовании сборки для генерации бинарного файла.
Процесс преобразования программы CIL в машинный код называется JIT-компиляцией (Just in time – точно во времени). Иначе, CIL-код, находящийся в запускаемой сборке, тут же компилируется в машинный код, на который затем передается управление (.exe). Порядок исполнения довольно сложная процедура [1]. Следует отметить, что программы на CIL переводятся в исполняемый бинарный код реального процессора лишь непосредственно перед исполнением. Полученный код сохраняется в оперативной памяти и исполняется. После завершения компиляции получается бинарный файл, сохраняемый на диске, который может затем исполняться без повторной компиляции.
Одним их преимуществ CLR среды является наличие сборщика мусора. Работа его заключается в освобождении оперативной памяти, занятой ненужными объектами. Данные, с которыми работает программа, находятся под полным контролем среды выполнения и у программиста уменьшается время на отладку программы.