An assembly is the .NET unit of versioning and deploying code modules. An assembly consists of Portable Executable (PE) files . PE files can be either dynamic link library (dll) files or exe files. These PE files are in the same format as normal Windows PE files.
Assemblies contain versioning information. An assembly is the minimum unit for a single version of a piece of code. Multiple versions of the same code can run side-by-side in different applications, with no conflicts, by packaging the different versions into separate assemblies, and specifying in the configuration files which version is current.
Assemblies are self-describing because they contain metadata that fully describes the assembly and the classes, methods, and types it contains. One of the files in the assembly contains a manifest as part of the metadata, which details exactly what is in the assembly. This includes identification information (e.g., name, version), a list of the types and resources in the assembly, a map to connect public types with the implementing code, and a list of other assemblies referenced by this assembly.
A web application consists of all the files and resources in an application's virtual root directory and its subdirectories. One standard subdirectory is the bin directory, sometimes called the application assembly cache. Any assemblies placed in this directory are considered private assemblies , and are automatically made available to the application.
Another standard subdirectory ...