Although the source code is not embedded in the assembly itself, I believe what you are after is a symbol server (created using the Symstore utility)
A symbol store is a database that allows debuggers to look up the correct symbols to use for any given module - very useful stuff if you ship / debug many different versions of the same assemblies.
With some extra magic you can also embed source control information inside your symbols, so that any compatible debugger also automatically knows enough information to retrieve the exact source used to build that module.
As I said however - the source code itself is not embedded in the assembly, merely the information required to allow the debugger to retrieve the source.
There is an excellent guide on how to do all of the above: