动态加载 dll,其中包括对外部库的引用



我动态加载dll(dll_1)并从中运行代码。当此 (dll_1) 使用另一个 dll (dll_2) 时,会出现此问题。我无法将dll_2嵌入dll_1。

我使用 Assembly.LoadFile 加载 dll,然后CreateInstanceInvokeMember.

我该怎么办?

如果我正确理解了您的问题,您希望检测何时未解析对程序集的引用,并能够进行调解以确保正确加载程序集。

您可以使用AppDomain.AssemblyResolveEvent来执行此操作。

最简单的选择是不使用 LoadFile 而改用 Load,因为它解析程序集的方式与正常程序集解析方式相同。

下一个选项是预加载依赖项或使用 Eric J 建议的 AssemblyResolveEvent。如果你走这条路,请阅读 Suzanne Cook 关于加载程序集和绑定上下文的文章(请注意,同一博客中有更多相关文章)。

除了链接的文章:

加载自优势:

程序集可以从多个路径加载,而不仅仅是从 ApplicationBase 下面加载。

将自动找到已在此上下文中加载的依赖项。

将自动找到与请求 LoadFrom 上下文程序集位于同一目录中的依赖项。

最新更新