gpt4 book ai didi

.net - 在运行时动态加载程序集依赖项时出现问题

转载 作者:行者123 更新时间:2023-12-02 13:44:19 29 4
gpt4 key购买 nike

让我尝试解释一下我的问题。我目前正在尝试开发一个用.Net编写的小型“插件框架”(主要是为了进行一些实验)。因此,我们的想法是拥有一个主应用程序,可以通过在主应用程序的特定文件夹“插件”中部署 dll 来添加“插件”。一切工作正常,插件已正确实例化,但是现在我遇到了问题。我现在已经部署了一个使用其他第 3 方插件的插件“X”,因此现在我遇到的问题是“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。

有人可以建议我更好的方法来解决我的问题吗?我希望我能够充分解释我的情况,否则请进一步澄清。

谢谢,朱里

最佳答案

您可以设置运行时的探测路径,以便它可以找到程序集。设置probing应用程序配置文件中的元素。

<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<probing privatePath="plugins;dependencies"/>
</assemblyBinding>
</runtime>
</configuration>

关于.net - 在运行时动态加载程序集依赖项时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/592681/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com