GAC (Global Assembly Cache) is used where shared .NET assembly reside. GAC is used in the following situations :-
1. If the application has to be shared among several application.
2. If the assembly has some special security requirements like only administrators can remove the assembly. If the assembly is private then a simple delete of assembly the assembly file will remove the assembly.