There are two types of assembly Private and Public (shared) assembly. A private assembly is normally used by a single application, and is stored in the application's directory, or a sub-directory beneath. A shared assembly is normally stored in the global assembly cache, which is a repository of assemblies maintained by the .NET runtime. Shared assemblies are usually libraries of code, which many applications will find useful, e.g. Crystal report classes that will be used by all application for Reports.