当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《搜索位置以什么顺序加载引用的DLL?》经验,为你挑选了2个好方法。

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

全局程序集缓存(GAC)

添加到AppDomain的任何私有路径

执行程序集的当前目录

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

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



1> Lars Truijen..:

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

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

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

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


如果.net dll引用本机dll,则可以使用路径

2> Anthony Mast..:

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

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

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

0. Global assembly cache

推荐阅读
贴进你的心聆听你的世界
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有