Assembly in .net Framework is, as I understand, intermediate language file + some metadata, manifest and maybe something else.
CLR translates an assembly to the machine code, which can be executed on the given local machine.
That means that assembly shouldn't be executable by the machine before being processed by CLR. If it's so, then why does it have .exe extension, which is executable on Windows machines?
See Question&Answers more detail:os