Types of assemblies in .Net
Types of Assemblies
There are three types of assemblies:
- Private assemblies
- Shared assemblies
- Satellite assemblies
1. Private assemblies:-
A private assembly is an assembly that is available to a particular application where they are kept as a private assembly is used by the clients of the same application directory structure as the assembly.
With simple, .NET applications, using only 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 should not have any versioning problems with the application. No other application will even overwrite your private assemblies. Of course, it is still a good idea to use version numbers for private assemblies too. This helps a lot but it is not a requirement of .NET.
2. Shared assemblies:-
A shared assembly is a public assembly that is shared by multiple applications. 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 and a unique name, and usually, it is installed in the global assembly Cache (GAC). The GAC enables you to share different versions of the same assembly on a system.
3. Satellite assemblies:-
An assembly with cultural information is automatically assumed to be a satellite assembly. These assemblies are used in deploying global applications for different languages. Satellite assemblies are used to build multi-linguistic applications. These language-specific assemblies work in side-by-side execution because the application has a separate product ID for each language and installs satellite assemblies in a language-specifies subdirectory for each language.