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

时间:2011-05-12 03:44:15

标签: c# .net dll

全部

我有一个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委托会帮我解决这个问题吗?

由于 问候, 机器人。

1 个答案:

答案 0 :(得分:1)

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