And on top of that, are there cases where one has to use the global assembly cache or where one cannot use it?
In all my life, I have had maybe one application where I had to put an assembly in the GAC, simply because these assemblies were part of a framework that a number of applications would use it, and it seemed right to put them into the GAC.