This chapter drilled down into the details of how the CLR resolves the location of externally referenced assemblies. You began by examining the content within an assembly: headers, metadata, manifests, and CIL. Then you constructed single-file and multifile assemblies and a handful of client applications (written in a language-agnostic manner).
As you have seen, assemblies can be private or shared. Private assemblies are copied to the client's subdirectory, whereas shared assemblies are deployed to the GAC, provided they have been assigned a strong name. Finally, private and shared assemblies can be configured using a client-side XML configuration file or, alternatively, via a publisher policy assembly.