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

时间:2012-08-15 17:54:56

标签: c# .net dll .net-assembly

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

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

我该怎么办?

2 个答案:

答案 0 :(得分:2)

如果我正确理解了您的问题,您想要检测何时没有解析对程序集的引用,并且能够进行调查以确保正确加载程序集。

您可以使用AppDomain.AssemblyResolveEvent来做到这一点。

答案 1 :(得分:0)

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

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

除了链接的文章:

  

LoadFrom优势:

     

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

     

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

     

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