C#插件系统设计

C#插件系统设计,c#,dll,plugins,C#,Dll,Plugins,因此,我正在为我的应用程序创建一个插件系统 我有以下组成部分: 1) 主要应用 2) PluginInterface.dll 3) 插件.dll 现在的问题是,当我创建插件并编译它们时,不仅仅是Plugin.dll文件。它在发布目录中有其他必需的文件,例如它使用的PluginInterface.dll、xml配置文件等 那个么,我怎样才能使它成为用户可以放入插件目录的单个dll文件呢 或 你认为把插件放在文件夹里更好吗?然后,我必须扫描所有文件夹以查找正确的DLL…该DLL是为插件体系结构设计的

因此,我正在为我的应用程序创建一个插件系统

我有以下组成部分: 1) 主要应用 2) PluginInterface.dll 3) 插件.dll

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

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


你认为把插件放在文件夹里更好吗?然后,我必须扫描所有文件夹以查找正确的DLL…

该DLL是为插件体系结构设计的。在你走得太远之前,先检查一下。它可能会更好地为您服务。

是为插件架构设计的。在你走得太远之前,先检查一下。它可能会为您提供更好的服务。

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

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

如果要在编译解决方案时执行此操作,应创建生成后事件(项目属性->生成事件),以仅将所需文件复制到插件目录。
您还可以更改项目的OutputPath,并使用选项“Copy Local”将其更改为“false”,但您的控制级别与创建生成事件的控制级别不同。

如果您想在编译解决方案时执行此操作,则应创建生成后事件(项目属性->生成事件)仅将所需文件复制到插件目录。
您还可以更改项目的OutputPath,并使用“Copy Local”选项将其改为“false”,但您将无法获得与创建构建事件相同的控制级别。

大约四年前,我在一个项目中实现了一个自定义插件框架。我可以说,我希望当时MEF有空。这会节省很多工作。我推荐MEF。大约四年前,我在一个项目中实现了一个自定义插件框架。我可以说,我希望当时MEF有空。这会节省很多工作。我会推荐MEF。