.NET程序集加载优先级

Dan*_*nte 17 .net assemblies gac

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

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

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

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

事先提前

Sha*_*men 20

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

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

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


Mik*_*Two 7

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