Possible Duplicate:
When should I deploy my assemblies into the GAC?
As per MSDN documentation:
You should share assemblies by installing them into the global assembly cache only when you need to. As a general guideline, keep assembly dependencies private, and locate assemblies in the application directory unless sharing an assembly is explicitly required.
When is sharing an assembly "explicitly required"? If assembly sharing is required, you can physically distribute the same assembly on different locations via XCOPY DEPLOYMENT à la Private Assemblies. I don't understand this general guideline.