西西软件园多重安全检测下载网站、值得信赖的软件下载站!
西西首页 电脑软件 安卓软件 电脑游戏 安卓游戏 排行榜 专题合集

SharpDevelop

5.1.0.5216 官方最新版
  • SharpDevelop5.1.0.5216 官方最新版
  • 软件大小:12.4M
  • 更新时间:2016-06-07 09:26
  • 软件语言:英文
  • 软件厂商:
  • 软件类别:国产软件 / 免费软件 / 编程工具
  • 软件等级:4级
  • 应用平台:WinAll, Win7
  • 官方网站:http://www.icsharpcode.net/OpenSource/SD
  • 应用备案:
好评:50%
坏评:50%

软件介绍

SharpDevelop 是一个用于制作C#或者VB.NET的项目而设计的一个编辑器,同时,这个编辑器本身就是使用C#开发的,而且公开了全部源代码,因此这个工具本身也是学习C#以及软件开发规范的一个很好材料。

SharpDevelop 这个轻型的开发工具支持多种程序语言,包括C#、java以及VB.NET,同时还支持多种语言界面,除了基于XML的文档提示工具,SharpDevelop 5还包含了诸如用光标插入、上下文动作、代码审查、增强的滚动条、后台语法检查、链接模式、抑制问题、自动命名变量等新功能。此外,开发人员将能够使用Ctrl+F7组合键监视表达式以及从剪贴板环粘贴内容。

这个编辑器的界面风格类似于Office XP以及VS.NET,这个编辑器可以支持书写C#, ASP.NET, ADO.NET, XML, HTML 等多种代码, 支持基于项目或者是文件的开发,可以对C#, HTML, ASP, ASP.NET, VBscript, VB.NET, XML 提供彩色语法显示支持,同时还可以把彩色的代码输出为HTML格式文件。你可以在代码中做标记,支持丰富的代码模版以及外接插件。

SharpDevelop插件:

SharpDevelop的插件系统更加强大,它的整个系统的基础就仅仅是一个插件管理系统,而你看到的所有的界面、功能统统都是以插件的形式挂入的。在这样的一个插件系统下,我们可以不修改基本系统,仅仅使用插件就构造出各种各样不同的系统。

    现在让我们来看看它的插件系统。进入到SharpDevelop的安装目录中,在Bin目录下的SharpDevelop.exe 和 SharpDevelop.Core.dll是这个系统的基本的插件系统。在Addins目录下有两个后缀是addin的文件,其中一个 SharpDevelopCore.addin 就是它的核心插件的定义(配置)文件,里面定义的各个功能模块存在于Bin/Sharpdevelop.Base.dll 文件中,另外还有很多其他的插件定义在Addins目录下的addin文件中。

    分析SharpDevelop的代码,首先要弄清楚几个基本的概念,这些概念和我以前的预想有一些区别,我深入了代码之后才发现我的困惑所在。

1、AddInTree  插件树
    SharpDevelop 中的插件被组织成一棵插件树结构,树的结构是通过 Extension(扩展点)中定义的Path(路径)来定义的,类似一个文件系统的目录结构。系统中的每一个插件都在配置文件中指定了 Extension,通过Extension中指定的 Path 挂到这棵插件树上。在系统中可以通过 AddTreeSingleton对象来访问各个插件,以实现插件之间的互动。

2、 AddIn 插件
    在 SharpDevelop 的概念中,插件是包含多个功能模块的集合(而不是我过去认为的一个功能模块)。在文件的表现形式上是一个addin配置文件,在系统中对应 AddIn 类。

3、Extension 扩展点
    SharpDevelop中的每一个插件都会被挂到 AddInTree(插件树) 中,而具体挂接到这个插件树的哪个位置,则是由插件的 Extension 对象中的 Path 指定的。在addin 配置文件中,对应于 <Extension> 。例如下面这个功能模块的配置

lt;Extension path = "/SharpDevelop/Workbench/Ambiences">
 <Class id    = ".NET" class = "ICSharpCode.SharpDevelop.Services.NetAmbience"/>
</Extension>

指定了扩展点路径为 /SharpDevelop/Workbench/Ambiences ,也就是在插件树中的位置。

4、Codon
    这个是一个比较不好理解的东西,在 SharpDevelop 的三个作者写的书的中译版中被翻译为密码子,真是个糟糕的翻译,可以跟Handle(句柄)有一拼了。词典中还有一个翻译叫“基码”,我觉得这个也不算好,不过还稍微有那么一点意思。(这里我原来误写为“代码子”,在评论中有位仁兄说这个翻译不错,现在我觉得也好像确实不错 ^o^)
    根据我对代码的理解,Codon 的功能是描述(包装)一个功能模块(一个功能模块对应一个实现了具体功能的 Command 类)。为了方便访问各个插件中的功能模块, Codon 给各种功能定义了基本的属性,分别是 ID (功能模块的标识),Name (功能模块的类型。别误会,这个Name 是addin文件定义中Codon的XML结点的名称,ID才是真正的名称),其中Name可能是Class(类)、MenuItem(菜单项)、Pad(面板)等等。根据具体的功能模块,可以继承Codon定义其他的一些属性,SharpDevelop中就定义了 ClassCodon、MenuItemCodon、PadCodon等等,你可以根据需要自己定义其他类型的Codon。在addin定义文件中,Codon对应于 <Extension> 标签下的内容。例如下面这个定义

lt;Extension path = "/SharpDevelop/Workbench/Ambiences">
 <Class id    = ".NET" class = "ICSharpCode.SharpDevelop.Services.NetAmbience"/>
</Extension>

<Extension ...> 内部定义了一个Codon,<Class ...>  表示该Codon是一个 Class(类),接着定义了该Codon的 ID和具体实现该Codon的类名ICSharpCode.SharpDevelop.Services.NetAmbience。运行期间将通过反射来找到对应的类并创建出来,这一点也是我们无法在以前的语言中实现的。

再例如这一个定义

<Extension path = "/SharpDevelop/Views/ProjectBrowser/ContextMenu/CombineBrowserNode">
<MenuItem id = "Compile"
 label = "${res:XML.MainMenu.RunMenu.Compile}" 
class = "ICSharpCode.SharpDevelop.Commands.Compile"/>
<MenuItem id = "CompileAll"
label = "${res:XML.MainMenu.RunMenu.CompileAll}" 
class = "ICSharpCode.SharpDevelop.Commands.CompileAll"/>
<MenuItem id = "CombineBuildGroupSeparator" label = "-" />
 ...
</Extension>

这个扩展点中定义了三个菜单项,以及各个菜单项的名字、标签和实现的类名。这里的Codon就对应于系统中的MenuCodon对象。

5、Command 命令
    正如前文所述,Codon描述了一个功能模块,而每个功能模块都是一个 ICommand 的实现。最基本的 Command 是  AbstractCommand,根据Codon的不同对应了不同的 Command。例如 MenuItemCodon 对应 MenuItemCommand 等等。

6、Service 服务
    插件系统中,有一些功能是整个系统都要使用的,例如文件访问、资源、消息等等。这些功能都作为插件系统的一个基本功能为整个系统提供服务,我们就叫“服务”好了。为了便于访问,这些服务都统一通过 ServiceManager 来管理。其实服务也是一种类型的插件,它们的扩展点路径在目录树中的 /Workspace/Services 中。

    理解了这几个基本的概念之后,就可以看看 SharpDevelop 的代码了。从 src/main/startup.cs 看起吧,之后是addin.cs、addinTree.cs 等等。&#8205;

软件标签: SharpDevelop

软件截图

SharpDevelop 5.1.0.5216 官方最新版

其他版本下载

最新评论查看所有(1)条评论 >

第 1 楼 瑞士 网友 客人 发表于: 2013/8/9 14:37:08
我最喜欢里面的胖子,虽然胆大粗鲁,行事莽撞,但是很够义气,也有本事,推荐大家都看看

支持( 0 ) 盖楼(回复)

发表评论

昵称:
表情: 高兴 可 汗 我不要 害羞 好 下下下 送花 屎 亲亲
TOP
软件下载