插件文件描述
插件的加载需要两类文件,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;