搜索位置以什么顺序加载引用的DLL?

Ant*_*ean 52 .net dll

我知道.NET框架在几个位置查找引用的DLL

  • 全局程序集缓存(GAC)
  • 添加到AppDomain的任何私有路径
  • 执行程序集的当前目录

这些地点的搜索顺序是什么?如果找到匹配项或者它是否继续通过所有位置(如果是,解决冲突的方式),是否停止搜索DLL?

此外,请确认或否认这些地点,并提供我未提及的任何其他地点.

Lar*_*ens 54

程序集加载是一个相当复杂的过程,它依赖于许多不同的因素,如配置文件,发布者策略,appdomain设置,CLR主机,部分或完整程序集名称等.

简单的版本是GAC是第一个,然后是私有路径.从不使用%PATH%.

最好使用程序集绑定日志查看器(Fuslogvw.exe)来调试任何程序集加载问题.

编辑 http://msdn.microsoft.com/en-us/library/aa720133.aspx更详细地解释了该过程.

  • 如果.net dll引用本机dll,则可以使用路径 (3认同)

Ant*_*ean 6

我发现了一篇文章引用的MSDN文章DLL搜索顺序,说

对于托管代码依赖项,全局程序集缓存始终占优势; 如果GAC中存在(或更新的策略)副本,则不会获取应用程序目录中的本地程序集.

考虑到这一点,我想MSDN列表是正确的添加一个

0. Global assembly cache