Introduction to Assemblies
An assembly is a logical grouping of metadata, code, and resources. You cannot create any functional code on the .NET Framework without using assemblies. Before this chapter gets into the structure and components of an assembly, it will examine a list of all the things that assemblies are responsible for:
Provides a container for code that can be executed by the Common Language Runtime.
Creates a secured entity. When permissions are assigned to .NET Framework code, they are assigned at the assembly level.
Supplies a container for type definitions. When you create a class, the assembly in which that class resides is a permanent part of that class definition. You cannot separate the containing assembly from data types contained within.
Provides a target for versioning. The assembly is the lowest denominator for containing versions in the .NET Framework. Every type and resource in a given assembly has exactly the same version.
Supplies a logical unit of deployment. Applications in the .NET Framework load only the types they need at runtime. These types are loaded from assemblies deployed with the application or even from locations on a network or the Internet.
This might seem a bit overwhelming at first, but it becomes clearer as you start to work with assemblies and see them in action.