这或许更像是一个哲学问题。
假设我有一个框架,我决定提供一个 .NET 库,使框架的某些方面的使用更容易。我不希望每个使用该框架的应用程序都在本地携带库的副本,因此我希望它在 GAC 中(即使存在可能暗示的所有维护问题。)
我可以让框架很容易地将库安装到 GAC 中,因此每个应用程序都不必这样做。但是当我创建新版本的库时,我的框架安装程序必须同时携带旧库和新库,以确保升级不会删除某些应用程序可能正在使用的旧库。
但是,如果每个应用程序也将库安装到 GAC,Windows Installer 引用计数就会启动,并且我的框架不再需要担心在升级场景中携带旧库。仅当最后一个 Windows Installer 引用消失时,才会卸载正在使用的库。
显然,每个应用程序在构建应用程序时都可以访问该库,并且可以轻松地将其包含在其安装程序中。
有人对一个与另一个有意见/观点/经验吗?我意识到这不是严格要求的问题类型(因为它会引起讨论),但我认为简短的讨论会很有用。