Сборка в .net Framework - это, как я понимаю, файл промежуточного языка + некоторые метаданные, манифест и, возможно, что-то еще.
CLR преобразует сборку в машинный код, который может быть выполнен на данном локальном компьютере.
Это означает, что сборка не должна выполняться машиной перед ее обработкой с помощью CLR. Если это так, то почему у него есть расширение .exe, которое выполняется на компьютерах Windows?