Sharpdevelop的项目结构
Sharpdevelop整个的体系结构大体上分为三个部分,分别如下
Libraries
这一部分定义了整个解决方案所用到的一些独立的类库,它们本身可以认为是独立于整
个解决方案的,没有引用任何其它类库,因此它们可以很容易的应用到第三方软件中。
这里面对我们最重要的有两个,分别是ICSharpCode.TextEditor和NRefactory.
Main
这一部分是最重要的部分,整个IDE的大部分业务逻辑都在这一部分实现,也是最复杂
的部分,它引用了Libraries里面的所有类库。
对我们来说,最重要的是这两个项目ICSharpCode.SharpDevelop和
ICSharpCode.SharpDevelop.Dom
文档对象模型(DOM)是与平台和语言无关的接口,允许程序和脚本动态地访问和更新
文档的内容、结构和样式。
Addins
这一部分定义了项目中用到的插件,虽然理论上说它们不是IDE必不可少的部分,但是
它们的存在是整个项目的功能得到了很好的扩充。它们会引用上面两个部分中的一些类
库。
Sharpdevelop学习(2)
调试Sharpdevelop
对于已经存在的项目,最好的学习方法就是通过调试来了解它的运行原理和设计思想,
当然Sharpdevelop也不例外,下面我们就简单介绍一下如何对它进行调试。
因为Sharpdevelop的一些项目使用VS的IDE打不开,所以最好的方法还是使用
Sharpdevelop本身进行调试。
首先找到Main文件夹,然后找到StartUp项目,这个就是解决方案的入口项目,把它设
置为启动项目。
该项目下有一个SharpDevelopMain.cs文件,里面有一个Main方法,该方法既是程序的
入口点,通过跟踪此入口点就可以顺藤摸瓜,弄清楚整个系统的运行脉络。
系统运行路线图
系统运行起来以后,首先会去调用SharpDevelopMain的RunApplication方法,在此方法
里,系统首先会得到一些文件夹信息,比如根目录(ApplicationRootPath),配置文
件(ConfigDirectory)的目录,缓存文件(DomPersistencePath)的目录,插件文件
(Addins)的目录;然后系统会创建SharpDevelopHost的实例,在实例化的过程中会调
用CallHelper. InitSharpDevelopCore()方法,在此方法里会初始化一些核心的服务,
比如日志,输出,字符串格式化,资源服务等。
等这些核心的服务都万事俱备以后,我们的主角就该出场了,就是工作台(Workbench
)。我们可以把工作台看作整个IDE的呈现部分,它通过这些核心的服务来处理我们的
代码和其他相关文件。工作台是通过WorkbenchSingleton
(ICSharpCode.SharpDevelop.Gui)类来管理的,它实例化的工作台实例是
DefaultWorkbench;在实例化工作台时会进行一些相关服务的初始化工作,比如显示服
务,文件服务,状态服务,文件解析服务,项目服务等,最后系统通过
Application.Run(WorkbenchSingleton.MainForm);来运行工作台的主窗口,我们就可
以在桌面上看到IDE了。
文章源地址