What Are Assemblies?
Assemblies are the deployment units of .NET applications. .NET applications consist of one or
more assemblies. .NET executables with the usual extension EXE or DLL are known by the term
assembly .
What ' s the difference between an assembly and a native DLL or EXE?
Though they both have the same file extension, .NET assemblies include metadata that describe all the types
that are defined in the assembly with information about its members — methods, properties,
events, and fields.
The metadata of .NET assemblies also give information about the files that belong to the assembly,
version information, and the exact information about assemblies that are used. .NET assemblies
are the answer to the DLL hell .
Assemblies are self - describing installation units, consisting of one or more files. One assembly
could be a single DLL or EXE that includes metadata, or it can be made of different files,
for example, resource files, modules, and an EXE.
Assemblies can be private or shared. With simple .NET applications, using just private assemblies
is the best way to work. No special management, registration, versioning, and so on is needed with
private assemblies.
The only application that could have version problems with private assemblies
is your own application. Other applications are not influenced because they have their own copies of the
assemblies.
The private components you use within your application are installed at the same time as
the application itself. Private assemblies are located in the same directory as the application or
subdirectories thereof. This way you shouldn ' t have any versioning problems with the application.
No other application will ever overwrite your private assemblies. Of course, it is still a good idea to use
version numbers for private assemblies too. This helps a lot with code changes, but it ' s not a
requirement of .NET.
With shared assemblies, several applications can use the same assembly and have a dependency on it.
Shared assemblies reduce the need for disk and memory space. With shared assemblies, many rules
must be fulfilled — a shared assembly must have a version number, a unique name, and usually it ' s
installed in the global assembly cache (GAC).