Micaps3.2二次开发实例教程-3
来源:互联网 发布:dede目录权限优化工具 编辑:程序博客网 时间:2024/06/08 17:12
第三节 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
核心功能
表1:库名对照表SharpDevelop关键字
Micaps关键字
备注
Workbench
Workspace
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
- Micaps3.2二次开发实例教程-3
- Micaps3.2二次开发实例教程-2
- Micaps3.2二次开发实例教程-1
- Micaps3.2二次开发实例教程-4
- Micaps3.2二次开发实例教程-5
- Micaps3.2二次开发实例教程-6
- Micaps3.2二次开发实例教程-7
- Micaps3.2二次开发实例教程-8
- Micaps3.2二次开发实例教程-9
- Micaps3.2二次开发实例教程-10
- Micaps3.2二次开发实例教程-11
- Micaps3.2二次开发实例教程-12
- Micaps3.2二次开发实例教程-13
- Micaps3.2二次开发实例教程-14
- [Net_Ghost] WPF实例教程(3)
- Smarty实例教程(3)
- Smarty实例教程(3)
- [Net_Ghost] WPF实例教程(2)
- LinearLayout中weight的学习
- 处理消息
- 某个工具从以下位置返回了错误代码: "正在执行预链接事件
- java和c的区别
- 易友姓名测试软件发布
- Micaps3.2二次开发实例教程-3
- 总结创建窗口全过程
- android中canvas和bitmap实现不同图像合并
- Android 学习点滴(1)
- 局部变量 静态变量staic 全局变量
- Unity 鼠标与触摸屏通用代码
- 关于如何在一个类使用函数指针保存其子类的非静态成员函数
- NYOJ-孪生素数问题
- HDU-2529 Shot(物理题)