I know that 1 namespace can span multiple assemblies and also that 1 assembly can contain multiple namespaces.
However, what foxes me is how can one Assembly span multiple files. Is it done by simply creating the multiple assemblies with the same name in separate directories? Is that all there is to it?
Multi-module assemblies are not recommended. There are very specific situations where you’d want a multi-module assembly (mixing multiple languages in one assembly for example) but there are several issues with this.
An assembly is the smallest portable unit of code in .NET, and contains its own versioning information (as Pranay Rana already pointed out). This bit of information is named the Manifest of the assembly. A multi-module assembly will have one manifest module, and one or more non-manifest modules.
The other modules cannot be used outside of the assembly – the assembly is still the smallest portable unit of code. They can, however, be left out (and perhaps downloaded on demand).
For more information, see the classic post on multi-module assemblies: http://blogs.msdn.com/b/junfeng/archive/2004/07/15/183813.aspx