我有一个包含3个项目(GUI,BL和DAL)的解决方案。 DAL程序集已在GAC中签名和部署。

当我构建解决方案时,编译DAL并将程序集放在主项目的bin文件夹中。但是当我运行应用程序时,它会加载GAC版本而不是本地版本。这是为什么?

我意识到因为GAC中的版本不是最新的版本而且有些方法丢失了,尽管编译得很好。

GAC是否优先于本地bin文件夹?

事先提前

有帮助吗?

解决方案

简短回答,GAC优先于本地文件。
这与我们在本机dll世界中使用的行为不同(不包括总是从SYSTEM32加载的一些系统dll,无论如何)。

为什么?结果 想象一下,由于程序集有错误,你有多个应用程序使用相同的程序集,你如何修复所有的应用程序? 很难开始搜索所有驱动程序上的所有应用程序,更容易将单个程序集部署到GAC并立即修复所有应用程序。

至于您的问题,如果您更改API,则需要更改该程序集的程序集版本,这样融合引擎将获取本地文件夹中的版本。

其他提示

是的,先检查GAC。加载规则记录在此处。要解决您的问题,您应该在更改API时更新程序集版本。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top