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