插件式程序开发sharpdevelop(2) 插件树和插件定义

插件文件描述

          插件的加载需要两类文件,AddIn XML的配置定义文件,及程序集文件(DLL,以及相关的附件文件和库等)。

当sharpdevelop核心开始和编译成单独树文件结构的时候,读取插件定义文件XML ,插件树是一个树状系统,将所有的细节进行绑定,插件树的结构就像是一个文件系统,例如我们想取得SubNode2节点,我们必须指定取得的位置如/Path1/SubPath1/Node1/SubNode2.  从上面可以看到Node1 像一个path,后期会看到其中的不同,现在,我们可以认为node1是路径包含的定义行为。

绝大多数通常应用插件树的是扩展菜单和工具栏,但Sharpdevelop 想要创建一个菜单或者是工具栏,必须要指定在ADDIN TREE中的path。“/SharpDevelop/Workbench/MainMenu” 包含了菜单选项, “/SharpDevelop/ViewContent/Browser/Toolbar” 包含了主浏览器中的工具栏项。


在插件树中的每一个Node 都有一个Condon,在ICSharpCode.Core执行中,具有一个Codon的描述属性。看一下XML 中的定义和描述。

<MenuItemid       = "Build"

         label    = "${res:XML.MainMenu.BuildMenu.BuildSolution}"

         shortcut = "F8"

         icon     = "Icons.16x16.BuildCombine"

    class    ="ICSharpCode.SharpDevelop.Project.Commands.Build"/>当这个插件树加载的时候,一个CODON的实例被创建,name定义的属性为MenuItem”,ID 属性是“Build”。其他的属性被放到“Properties” container (Hashtable). Codon 包含了菜单的细节信息,如标志,快捷键,图标,和完整的保留名称,当这个类被点击运行的时候。

<Pathname = "/SharpDevelop/Workbench/MainMenu/View">

    <MenuItemid = "ShowStartPage"

              insertafter  = "ViewItemsSeparator"

              insertbefore = "FullScreen"

              label ="${res:XML.MainMenu.ViewMenu.ShowStartPage}"

              icon = "Icons.16x16.BrowserWindow"

             class = "ICSharpCode.StartPage.ShowStartPageCommand"/>

</Path>

 

 

插件树可以被插件重新定义在所有的插件中,例如StartPage.addin  XML 定义文件描述如下。

<Pathname = "/SharpDevelop/Workbench/MainMenu/View">

    <MenuItemid = "ShowStartPage"

              insertafter  = "ViewItemsSeparator"

              insertbefore = "FullScreen"

              label ="${res:XML.MainMenu.ViewMenu.ShowStartPage}"

              icon = "Icons.16x16.BrowserWindow"

             class = "ICSharpCode.StartPage.ShowStartPageCommand"/>

</Path>

The path "/SharpDevelop/Workbench/MainMenu/View" 被主插件SharpDevelop和StartPage'sAddIn 定义应用。当加载文件的时候,ICSharpCode.Core合并path中的文档内容到插件树中。属性“insertafter” 和 “insertbefore” 指定位置,  这些指定所控制的信息的插入位置。


插件文件描述文本

Addin文件是插件中的接口描述文件。在这里可以指定扩展信息,插件的程序集文件(DLL),只是在第一次使用的时候才被加载。

插件描述文件addin 模板举例说明

 

<AddInname        = "MyAddInName"

      author      = "username"

      copyright   = "GNU General Public License"

      url         = ""

      description ="TODO: Put description here">

   

<Runtime>

       <Importassembly = "MyAddInName.dll"/>

</Runtime>

   

<Path name ="/SharpDevelop/Workbench/Pads">

    <Padid       = "MyAddInNamePad"

        category = "Main"

        title   = "MyAddInNamePad"

        icon    = "PadIcons.NUnitTest"

        shortcut = "Control|Alt|T"

         class   = "MyAddInName.TestPad"/>

    </Path>

</AddIn>

 

 

说明:

1)       <Runtime> 描述插件使用的程序集.

2)       <Path >  扩展路径,

3)       插件描述文件addin 不会被编译,需要拷贝到项目的输出目录,在文件的属性设置中设置如下。BuildAction=None, CopyToOuputDirectory=Always;


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值