我正在编写一个接受插件的C#应用程序。我完成此操作的方式如下:
- 在我的解决方案中,创建一个包含单个接口的项目,该接口定义插件类的预期方法。
- 在主应用程序中,添加对此项目的引用,其中包含一个接口。
- 向解决方案中添加一个代表插件的第三个项目。该插件还引用了接口项目。
在我的主应用程序中,我扫描了plugins文件夹中与给定文件名(plugin_.dll)匹配的文件。如果找到了此类文件,我将加载程序集,然后使用反射来查找实现该接口的任何类。对于任何此类,我将其实例添加到List<IPlugin>
中。然后,该应用可以通过此列表访问所有插件。
这很好用,我已经成功编写了两个非常简单的插件。
我在这里苦苦挣扎:
- 当我要测试插件时,我必须首先构建解决方案,然后手动将构建的插件复制到应用程序扫描的正确位置。我知道我可以通过添加构建后命令来自动执行此操作。
- 更重要的是,有没有一种好的方法可以调试插件中的代码? (单步执行,异常中断等)。现在,我只需运行应用程序,看看会发生什么。如果需要跟踪,我会使用大量的
Console.WriteLine
。但是,它的效率远远低于使用VS的调试器。
- 在这一点上不那么重要,但可能是一回事:别人 else 将如何调试插件?更具体地说:如果我启动一个新的VS解决方案并引用该接口程序集,是否有任何合理的方法来调试新插件中的代码?