我动态加载dll(dll_1)并从中运行代码。当此 (dll_1) 使用另一个 dll (dll_2) 时,会出现此问题。我无法将dll_2嵌入dll_1。
我使用 Assembly.LoadFile
加载 dll,然后CreateInstance
并InvokeMember
.
我该怎么办?
如果我正确理解了您的问题,您希望检测何时未解析对程序集的引用,并能够进行调解以确保正确加载程序集。
您可以使用AppDomain.AssemblyResolveEvent来执行此操作。
最简单的选择是不使用 LoadFile 而改用 Load,因为它解析程序集的方式与正常程序集解析方式相同。
下一个选项是预加载依赖项或使用 Eric J 建议的 AssemblyResolveEvent。如果你走这条路,请阅读 Suzanne Cook 关于加载程序集和绑定上下文的文章(请注意,同一博客中有更多相关文章)。
除了链接的文章:
加载自优势:
程序集可以从多个路径加载,而不仅仅是从 ApplicationBase 下面加载。
将自动找到已在此上下文中加载的依赖项。
将自动找到与请求 LoadFrom 上下文程序集位于同一目录中的依赖项。