SharpDevelop学习笔记(4)——SharpDevelop的核心

SharpDevelop的主要任务是加载和生成AddIn树。SD的核心程序由三个project 组成,即StartUp、ICSharpCode.SharpDevelop、ICSharpCode.Core。在其中实现了包括内核的主要任务在内的几个基本服务。

Add-ins又叫Plug-ins中文中我们称做插件。他与核心的基础结构与其余代码之间都是相互分离的,我们可以在AddIns目录中找到它们。而核心部分位于src/SharpDevelop/Core目录中。我们下面将主要讨论AddIn树的结构和实现,与AddIn树的对象创建机制。
 
AddIn树是通过singleton模式来实现的。AddIn树是通过为插件定义的一个XML来加载的,在这个XML中引用实现插件的DLL。DLL来提供代码实现,XML定义将其插入到AddIn树的方式和位置。以下是StartPage(SD的启始页插件)的XML,这个XML被命名为StartPage.addin。
 
< AddIn name         = "Start Page"
       author      = "Georg Brandl"
       copyright    = "prj:///doc/copyright.txt"
       description = "VS like Start Page for #develop">
    
     < Manifest >
         < Identity name = "ICSharpCode.StartPage"/>
     </ Manifest >
    
     < Runtime >
         < Import assembly = "StartPage.dll"/>
     </ Runtime >
 
     < Path name = "/SharpDevelop/Workbench/MainMenu/View">
         < MenuItem id = "ShowStartPage"
                   insertafter  = "ViewItemsSeparator"
                   insertbefore = "StartPageSeparator"
                   label = "${res:XML.MainMenu.ViewMenu.ShowStartPage}"
                    icon  = "Icons.16x16.BrowserWindow"
                   class = "ICSharpCode.StartPage.ShowStartPageCommand"/>
         < MenuItem id = "StartPageSeparator"
                     insertbefore = "FullScreen"
                     type = "Separator"/>
     </ Path >
    
     < Path name = "/Workspace/AutostartNothingLoaded">
         < Class id = "ShowStartPageCommand"
                class = "ICSharpCode.StartPage.ShowStartPageCommand"/>
     </ Path >
    
     < Path name = "/SharpDevelop/Views/Browser/SchemeExtensions">
         < BrowserSchemeExtension id     = "startpage"
                                 class = "ICSharpCode.StartPage.StartPageScheme"/>
     </ Path >
</ AddIn >
 
这些XML用来携带插件信息,<RunTime>节点提供程序集信息。之后定义了<Path>节点
来提供功能的命名空间。这样为反射执行提供了足够信息。
 
AddIn树是由节点和路径组成的,AddIn是树的节点,路径的作用是构造树并不是真正的节点。IDE根据这些节点(AddIn)的定义内容更改行为。在SD中所有可见元素都由节点定义,大多数不可见元素,如键盘命令cursor keys,在插件树中也被作为节点实现。
 
在项目ICSharpCode.Core中提供了一些的服务:FileUtility、LoggingService、MenuService、MessageService、PropertyService、ResourceService、StringParser、ToolBarService。通过这些服务SD的内核可以获取到所有需要的资源。正是由于这些服务的存在才使得SharpDevelop更具灵活性。这些服务的存在也为AddIn的实现提供了可能。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值