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 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…