【问题标题】:C# plugin system designC#插件系统设计
【发布时间】:2010-10-25 14:25:15
【问题描述】:

所以我正在为我的应用创建一个插件系统。

我有以下组件: 1) 主要应用 2) 插件接口.dll 3) Plugin(s).dll

现在的问题是,当我创建插件并编译它们时,不仅仅是 Plugin.dll 文件。它在 Release 目录中还有其他需要的文件,例如它使用的 PluginInterface.dll、xml 配置文件等。

那么我怎样才能使它成为一个用户可以放入插件目录的单个 dll 文件?

您认为将插件放在文件夹中更好吗?然后,我必须扫描所有文件夹以查找正确的 DLL...

【问题讨论】:

    标签: c# dll plugins


    【解决方案1】:

    Managed Extensibility Framework 专为插件架构而设计。在您沿着当前路径走得太远之前,请先检查一下。它可能会更好地为您服务。

    【讨论】:

    • 大约四年前,我在一个项目中实现了一个自定义插件框架。我可以说我希望 MEF 那时可用。它会节省很多工作。我会推荐 MEF。
    【解决方案2】:

    当您编译插件项目时,右键单击对您所看到的 DLL 的引用并选择属性。在属性中将“复制本地”属性设置为“假”。确保这些 DLL 是您的主应用程序的一部分,否则代码会在找不到依赖它的代码时失败。

    【讨论】:

      【解决方案3】:

      如果您想在编译解决方案时这样做,您应该创建一个构建后事件(项目属性 -> 构建事件)以仅将所需文件复制到插件目录。 您还可以更改项目的 OutputPath 并使用“Copy Local”选项为“false”,但您不会拥有与创建构建事件相同的控制级别。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-02-24
        • 2010-11-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多