0%

插件式程序开发sharpdevelop

插件式程序开发sharpdevelop(2) 插件树和插件定义_sharpdevelop workbench-CSDN博客

Excerpt

文章浏览阅读1.5k次。插件文件描述 插件的加载需要两类文件,AddIn XML的配置定义文件,及程序集文件(DLL,以及相关的附件文件和库等)。当sharpdevelop核心开始和编译成单独树文件结构的时候,读取插件定义文件XML ,插件树是一个树状系统,将所有的细节进行绑定,插件树的结构就像是一个文件系统,例如我们想取得SubNode2节点,我们必须指定取得的位置如/Path1/SubP_sharpdevelop workbench


插件文件描述

          插件的加载需要两类文件,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”/>

插件树可以被插件重新定义在所有的插件中,例如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”/>

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”>

       <Importassembly = “MyAddInName.dll”/>

    <Padid       = “MyAddInNamePad”

        category = “Main”

        title   = “MyAddInNamePad”

        icon    = “PadIcons.NUnitTest”

        shortcut = “Control|Alt|T”

         class   = “MyAddInName.TestPad”/>

   

说明:

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

2)         扩展路径,

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