
In what order are locations searched to load referenced DLLs?我知道.NET框架会在多个位置查找引用的DLL。
这些位置是按什么顺序搜索的? 如果找到匹配项,是否停止了对DLL的搜索,或者它在所有位置都继续进行(如果是,则如何解决冲突)? 另外,请确认或拒绝这些位置,并提供我没有提及的其他任何位置。 程序集加载是一个相当复杂的过程,它取决于许多不同的因素,例如配置文件,发布者策略,appdomain设置,CLR主机,部分或完整程序集名称等。 简单的版本是,GAC首先,然后是私有路径。从未使用%PATH%。 最好使用程序集绑定日志查看器(Fuslogvw.exe)调试任何程序集加载问题。
编辑 我发现有一篇文章引用了DLL搜索顺序上的MSDN文章,内容为
考虑到这一点,我猜MSDN列表是正确的
"加载DLL时,不再首先搜索当前目录!在Windows XP SP1中也进行了此更改。现在的默认行为是先查找所有系统位置,然后是当前目录,最后是所有用户定义的路径。" (参考http://weblogs.asp.net/pwilson/archive/2003/06/24/9214.aspx) MSDN上也描述了默认的搜索顺序,可以通过应用程序来更改它:http://msdn.microsoft.com/zh-cn/library/ms682586.aspx |