加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

.net – 在运行时动态加载程序集依赖项的问题

发布时间:2020-12-14 04:59:57 所属栏目:百科 来源:网络整理
导读:让我试着解释我的问题.我目前正在尝试开发一个用.Net编写的小型“插件框架”(主要用于实验).因此,我们的想法是通过在主应用程序的特定文件夹“插件”中部署dll来创建一个可以添加“插件”的主应用程序. 一切正常,插件正确实例化,但现在我遇到了问题. 我现在
让我试着解释我的问题.我目前正在尝试开发一个用.Net编写的小型“插件框架”(主要用于实验).因此,我们的想法是通过在主应用程序的特定文件夹“插件”中部署dll来创建一个可以添加“插件”的主应用程序.
一切正常,插件正确实例化,但现在我遇到了问题.
我现在部署了一个使用其他第三方插件的插件“X”,所以现在我遇到的问题是在运行时找不到“X”所需的这些额外的第三方插件.因此,我的想法是现在添加一个额外的目录“dependencies”,我还部署了所有需要的插件.

所以我的第一个问题:
如何将程序集加载到应用程序域中(假设我知道它们的路径)s.t.它们可以被我的应用程序使用?

我尝试通过做类似的事情来解决这个问题:

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>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读