【问题标题】:How to runtime link "plugin" reference dlls如何运行时链接“插件”参考 dll
【发布时间】:2016-05-02 15:18:05
【问题描述】:

恐怕这是一个过于宽泛的问题。但是我仍然不知道如何开始这项工作,所以即使是一个线索也会有所帮助,因为谷歌搜索没有任何结果......

每当我链接一个引用时,我都会在构建它之前添加它。 我需要的是能够添加在目录中添加的任何引用。 这将允许我将一个 dll 放在一个目录中,并仅在该 dll 存在时才在运行时添加它。

这么说

  • 开始时没有添加任何内容 ---> 没有其他功能。
  • 我添加了 1.dll ----> 应该添加 1.dll 中存在的功能
  • 我添加了 2.dll ----> 2.dll 中的功能应该被添加

等等……

我称这些 dll 为插件,因为它们类似于插件。

提前感谢您的帮助。 帕特里克

【问题讨论】:

  • 到目前为止你尝试过什么?假设您的 1.dll 和 2.dll 正在实施相同的合同以支持插件基础设施。这可以通过多种方式实现。您可以使用原始反射来加载和调用程序集或使用MEF 等框架。有很多文章和示例可以实现您的要求。
  • 哦,是的,我在输入答案时忘记了 MEF 框架。这可能是更简单的解决方案。
  • 我的坏事我试过了......什么都没有,因为这完全超出了我的知识范围(我也是 wpf 的新手)。正如我所说,我已经搜索了各种关键字。但我的搜索没有带来任何东西。不过谢谢你的评论!现在我有一些事情要开始了。

标签: c# wpf dll reference runtime


【解决方案1】:

您可以创建一个新的AppDomain 并将 appRelativeSearchPath 设置为您的插件文件夹。然后,您可以使用新 AppDomain 的 Load 方法加载其他程序集。

如果您想从应用程序主 AppDomain 中的新 AppDomain 访问类,您可以使用 AppDomain 的 CreateInstanceAndUnwrap 方法实例化它们。但是插件程序集中的类必须继承 MarshalRefObject 才能工作。

我希望这能为您指明正确的方向。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-07
    • 2013-08-13
    • 2013-10-05
    • 1970-01-01
    • 1970-01-01
    • 2013-08-27
    • 2015-05-14
    相关资源
    最近更新 更多