Assemblies are re-usable, self-descriptive, version-able building blocks of a .net application. It stores all the necessary information of the deployment and versioning about the application.
The metadata of the assembly is called “manifest”.
An Assembly can be formed into a single file or multiple files. In case of “Single File” the file will be single EXE or DLL file.In “Case of multiple files” , an assembly can consist of a number of executable files and resource files. In that case, the manifest may be a separate file, or it may be included in one of the executable files.
Task of an Assembly File :
Assemblies enable the common language runtime to locate and securely execute code. In particular, the runtime uses assemblies for the following purposes:
- Establishing security and version identity for code.
- Providing a scope for class and type resolution.
- Locating classes to load.
Assembly and Versioning :
One of the primary goals of assemblies is versioning. Specifically, assemblies provide a means for developers to specify version rules between different software components, and to have those rules enforced at run time.
Because assemblies are the building blocks of applications, they are the logical point for specifying and enforcing version information. Each assembly has a specific version number as part of its identity.
The version number is stored in the assembly’s manifest along with other identity information, including the friendly name and supported locales. The fact that a version number is part of an assembly’s identity is the key to versioning: AssemblyA, version 1 and AssemblyA, version 2 are two completely different entities, and are treated as such at run time.