Assembly: contains a manifest, CIL instructions, and metadata describing the classes contained therein.
Assemblies are self-describing. Because of this, there is no need to register them into the system registry.
.NET binaries (.dll and .exe) have no internal similarities to their equivalents in COM servers and Win32 binaries.
.NET binaries contain CIL (common intermediate language) and type metadata; they don’t contain platform-specific instructions.
CIL gets compiled to platform-specific instructions until absolutely necessary, usually when a block of CIL instructions (like a method) is referenced by the .NET runtime.
Assemblies contain metadata, which describes a class’s base class, the interfaces it implements, as well as a description of each member in the class. Metadata is always present.
Manifest: metadata about an assembly. Current version of the assembly, culture info, as well as a list of externally referenced assemblies needed at runtime (.assembly extern mscorlib).