While a .NET assembly often takes the form of a DLL file, an assembly is a logical unit of code containing metadata, type definitions, and manifests, whereas a DLL is merely a file format. An assembly can span multiple files, making them not the same thing.