调试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了。