This is more of a philosophical question, perhaps.
Let's say I have a framework of some sort and I decide to provide a .NET library that makes the use of certain aspects of the framework easier. I don't want each application that uses the framework to carry a copy of the library locally, so I want it in the GAC (even with all the maintenance issues that that might imply.)
I can have the framework install the library into the GAC pretty easily so each app doesn't have to. But then when I create a new version of the library, my framework installer has to carry both the old and the new library to make sure upgrades don't remove the old library that might be in use by some application.
However, if each application also installs the library to the GAC, Windows Installer reference counting kicks in, and my framework no longer has to worry about carrying old libraries around in the upgrade scenario. An in-use library will only get uninstalled when the last Windows Installer reference is gone.
Obviously, each application has access to the library at the time the application is built and can easily include it in its installer.
Does anybody have an opinion/viewpoint/experience of one vs. the other? I realize this is not strictly the desired type of question (since it invites discussion), but I think a short discussion would be useful.