我有一个项目需要使用 NHibernate 与我的 Oracle 数据库进行通信。
我的工作场所很多项目都使用NHibernate,所以NHibernate的程序集被放在了Global Assembly Cache中,这个工具我不是很了解。根据我的研究,我收集了以下内容:
第二点显然与其他三点矛盾,但如果它只是错误的,我在引用库时不会有任何问题。它确实反射(reflect)了现实,因为在“添加引用”窗口中找不到我的 GAC 程序集。
我想知道两件事:
没有注册表技巧就无法引用的库?
GAC,不涉及注册表?
最佳答案
and all .NET projects that reference it will now use the new version.
不,这就是所谓的 DLL hell 。应用程序引用特定版本的程序集。您可以更新 DLL 并更新使用它的应用程序。并且不会破坏也使用该 DLL 但没有重新编译的旧应用程序。您可以使用 GAC 做到这一点,因为它可以存储多个版本的 DLL。或者您也可以通过将 DLL 保存在与应用程序的 EXE 相同的目录中来轻松完成此操作。
GAC 中的程序集不会出现在“添加引用”对话框中。必然如此,您不知道您的用户在其 GAC 中存储了什么。您可以使用开发机器上的“浏览”选项卡,这样您就可以确保使用 DLL 的特定版本。
GAC 对于需要分发安全更新的公司很重要。像微软。它确保没有未修补的 DLL 副本四处漂浮。对于 [ComVisible] 程序集解决 COM 的 DLL Hell 问题也很重要。就是这样。
关于.net - 引用全局程序集缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7822026/