使用 appdomain - ResolveEventHandler 从 dll 动态加载依赖于 Dll

本文关键字:动态 加载 依赖于 Dll dll appdomain ResolveEventHandler 使用 | 更新日期: 2023-09-27 17:56:16

大家好

我有一个dll c#.net项目,它引用了一些其他子dll。使用我的主dll的exe应用程序位于另一个文件夹中,它使用"Assembly.LoadFile"动态加载主dll。我的问题是,由于其他子 dll 位于主 dll 的文件夹中,exe 无法加载主 dll。(因为主 DLL 的依赖项在 exe 路径中不可用。但是当我将子 dll 复制到 exe 文件夹中并动态加载主 dll 时,它工作正常。我想将所有 dll 保存在一个文件夹中并动态加载主 dll。如何解决此问题?(都是 C#/.net2.0 项目)

Appdomain-ResolveEventHandler Delegate 會幫助我解決這個問題嗎?

谢谢问候机器人。

使用 appdomain - ResolveEventHandler 从 dll 动态加载依赖于 Dll

是的,这正是您解决程序集加载问题所需要的。 如果订阅 AppDomain.CurrentDomain.AssemblyResolve 事件,则当 CLR 尝试绑定到程序集并失败时,将调用该事件。 该事件会向您传递一个包含失败程序集名称的 ResolveEventArgs 参数,然后您可以使用所选路径手动调用 Assembly.LoadFrom 并改为返回该程序集。