我正在通过Assembly.LoadFrom
加载一个存储在应用程序基本路径之外的程序集(A);我加载的程序集引用同一目录中的另一个.net程序集(B)。
当我尝试使用A程序集的一些方法时,Fusion日志显示系统正试图从应用程序基本目录而不是A.dll的父目录加载B.dll。
我向AppDomain.CurrentDomain.AssemblyResolve
添加了一个侦听器,该侦听器由发送方AppDomain
调用,其中有一条消息说"没有上下文策略",并且ResolveEventArgs.RequestingAssembly
属性设置为null
。
LoadFrom
不应该允许在其父目录中搜索程序集的依赖项吗?
是的,我认为应该这样做,但leppie是正确的,事实并非如此。下面是一篇关于程序集探测序列的详细MSDN文章。有几次我遇到了完全相同的问题,使用AssemblyResolve事件是唯一的方法。
好吧,实际上应该!确实如此。参见:
- https://blogs.msdn.microsoft.com
- https://learn.microsoft.com
虽然CLR仍然尝试使用GAC和appbase目录解析程序集(A)的依赖项,但它也会查找从中加载的文件夹(A)。