Under .NET, assemblies are distribution units executed by the Common Language Runtime( CLR) that are in Common Intermediate Language( CIL). The extensions of these compiled program classes are usually *.exe or *dll.
Assemblies contain information with which the assembly attributes are stored as metadata. This meta information can be stored in the source code of the Assemblies. With the assembly attributes certain classes can be marked. The assembly attributes are values that contain information about the assembly. These can be attributes that identify the assembly, information attributes, obvious attributes, or strong names as used in public assemblies.
The identification is determined by the three attributes name, version and formation. Information attributes can be used to add additional company or product information. The obvious manifested assembly attributes include the title, description, preferences, and configuration.
There are public assemblies and private assemblies. Private Assemblies, unlike Puclic Assemblies, are not installed in the global directory, the Global Assembly Cache(GAC). They are only available to certain applications. In contrast, Public Assemblies are installed in the Global Assembly Cache and can be accessed by all applications. The public assemblies are uniquely identified by a so-called strong name.