让我试着解释我的问题。我目前正在尝试开发一个用 .Net 编写的小型“插件框架”(主要用于试验)。所以这个想法是有一个主应用程序,可以通过在主应用程序的特定文件夹“插件”中部署 dll 来添加“插件”。一切正常,插件已正确实例化,但是现在我遇到了问题。我现在已经部署了一个插件“X”,它使用了额外的第 3 方插件,所以现在我遇到的问题是在运行时找不到“X”所需的这些额外的第 3 方插件。因此,我现在的想法是添加一个额外的目录“依赖项”,我还部署了所有需要的插件。
所以我的第一个问题:如何将程序集加载到应用程序域中(假设我知道它们的路径)它们可以被我的应用程序使用?
我试图通过做类似的事情来解决这个问题:
AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(CurrentDomain_AssemblyResolve);
System.Reflection.Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
{
//find the path to the assembly and then load and return it by
//return Assembly.Load("pathToDependencies/failedAssembly.dll");
}
问题是这个事件处理程序现在被激活,在 args 变量中有“Presentation.Zune.dll”(我正在使用 WPF 应用程序)。似乎该程序集加载失败,但实际问题是另一个 dll。
有人可以建议我更好的方法来解决我的问题吗?我希望我能够充分解释我的情况,否则只是要求进一步澄清。
谢谢,朱里