<p>If you create a class library that uses things from other assemblies, is it possible to embed those other assemblies inside the class library as some kind of resource?</p>

<p>I.e. instead of having <em>MyAssembly.dll</em>, <em>SomeAssembly1.dll</em> and <em>SomeAssembly2.dll</em> sitting on the file system, those other two files get bundled in to <em>MyAssembly.dll</em> and are usable in its code.</p>

<hr>

<p>I'm also a little confused about why .NET assemblies are <em>.dll</em> files. Didn't this format exist before .NET? Are all .NET assemblies DLLs, but not all DLLs are .NET assemblies? Why do they use the same file format and/or file extension?</p>

Take a look at
ILMerge
for merging assemblies.
I'm also a little confused about why .NET assemblies are .dll files. Didn't this format exist before .NET?
Yes.
Are all .NET assemblies DLLs,
Either DLLs or EXE normally - but can also be netmodule.
but not all DLLs are .NET assemblies?
Correct.
Why do they use the same file format and/or file extension?
Why should it be any different - it serves the same purpose!