第三节 Micaps3.2与SharpDevelop
说到Micaps3.2开发,不得不提到SharpDevelop。
Micaps3.0、3.1的插件架构是Micaps团队核心开发人员自定义的一套架构,虽然实现了插件基本功能,但没有详细的插件文档,非开发团队内部人员学习掌握起来难度较大。从Micaps3.2开始使用SharpDevelop架构,这是一套十分成熟的开源插件框架,网上有大量文档可以参考,很容易找到开发人员交流,二次开发更加容易。
虽然Micaps3.2采用了SharpDevelop架构,但开发人员似乎刻意回避这个情况,不仅开发文档中未提及SharpDevelop,并且将代码中将所有有关SharpDevelop字符都替换掉了,甚至将部分核心类名都改了,二次开发中,你需要尽量发挥想象力,猜测Micaps3.2中的类对应的SharpDevelop类名,以完成所需功能。这给二次开发带来不小难度。这里我整理少量Micaps对SharpDevelop修改的内容。
SharpDevelop库名 | Micaps库名 | 备注 |
ICSharpCode.SharpDevelop.dll | Micaps.Core.dll | 核心插件库 |
ICSharpCode.Core.WinForms.dll | Micaps.Framework.dll | UI处理部分 |
ICSharpCode.SharpDevelop.dll | Micaps.dll | 核心功能 |
SharpDevelop关键字 | Micaps关键字 | 备注 |
Workbench |
| |
Pad | ToolWindow |
|
表2: 关键字对照表
SharpDevelop的插件架构依赖一个被称作做插件树的结构实现,插件树以XML文件形式表示。开发人员在开发插件时,需先将插件的各类信息写入一个后缀为.Addin的XML文件。主程序在启动时,会搜索插件目录中所有的插件.Addin文件,并将它插入插件树中。在程序运行中,根据插件树里的信息加载实现插件的功能。
比如我们现在要编写插件为SharpDevelop的工具条增加一个按钮,可以在该插件的.Addin文件中给出该按钮的名称、显示内容、图标、位置以及实现该按钮单击动作功能的类名,然后在插件代码中实现该类,主程序启动后即可找到并根据此按钮的描述信息添加按钮,单击按钮后调用插件代码。当然,这一切都需要有严格的协议,任何一处有问题主程序都无法识别,插件也无法加载运行。
SharpDevelop插件架构功能十分强大,我会在后面的以实例方式进行讲解。但仅靠我的教程是无法完全搞懂的,要深入学习,建议大家学习《C#软件项目开发全程剖析——全面透视SharpDevelop软件的开发内幕》一书。
CodeProject上还有一篇Sharpdevelop开发人员写的:《使用SharpDevelop构建插件应用程序》的文章和源码,很有参考价值:
http://www.codeproject.com/Articles/12587/Building-Applications-with-the-SharpDevelop-Core