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