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

文章源地址

http://www.cnblogs.com/taxhaven/articles/1725186.html

Sharpdevelop学习相关推荐

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

    SharpDevelop的主要任务是加载和生成AddIn树.SD的核心程序由三个project 组成,即StartUp.ICSharpCode.SharpDevelop.ICSharpCode.Cor ...

  2. SharpDevelop

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

  3. Asp.Net 学习资源列表

    名称:快速入门 地址:http://chs.gotdotnet.com/quickstart/ 描述:本站点是微软.NET技术的快速入门网站,我们不必再安装.NET Framework中的快速入门示例 ...

  4. 学习C#中调用COM,后期绑定(以及对WinHttp COM对象的C#封装)

    学习C#中调用COM,后期绑定(以及对WinHttp COM对象的C#封装) 学习C#中调用COM,后期绑定全部代码 开始学习C#了,没打算从语法一点一点的看起!所以上来就直接开始代码了!同时也和De ...

  5. 在 Rss Bandit 和 SharpDevelop 之间的权衡

    在 Rss Bandit 和 SharpDevelop 之间的权衡 (心理变化过程,没有技术含量,只是胡诌,呵呵) 距离上次的WebLog居然过了一个月有半,其实心理是一直希望可以经常写点东西的, 我 ...

  6. 最新最全的ASP.NET学习资源大全

    最新最全的ASP.NET学习资源大全(网络摘要) 本文为中国ASP.NET开发网原创文章,转载必须注明出处. 名称: ASP.NET 地址:http://www.asp.net 介绍:微软.NET w ...

  7. SharpDevelop插件系统创建过程全面分析

    前言 2005年2月,我申报了一个学校组织的大学生SRTP项目,项目的题目是数据结构动画演示系统.当初在做项目之前,我无意中买了一本书,书名为<SharpDevelop软件项目开发全程剖析> ...

  8. 【转载】SharpDevelop代码分析

    [原文地址]http://www.cnblogs.com/passos/archive/2004/10/04/48950.html 序 最近开始学习.Net,遇到了一个比较不错的开源的IDE Shar ...

  9. .net 插件式开发学习总结

    .NET简谈插件系统开发模式 今天跟大家分享一下我们在日常开发中并不常用的开发模式"插件系统模式",什么叫插件从大一点的概念讲就是我们开发的软件是由很小的模块组成,每一块都能成功的 ...

最新文章

  1. 决策树模型与学习《一》
  2. jQuery数组处理详解(含实例演示)
  3. 最佳实践 ADO.NET实用经验无保留曝光
  4. php-5.6.26源代码 - opcode执行
  5. Android Studio怎么设置悬浮提示文字框显示函数
  6. recyclerview 加载fragment_恢复 RecyclerView 的滚动位置
  7. 台阶问题(洛谷P1192题题解,Java语言描述)
  8. store 存取数据数组对象_如何从Firestore文档中获取对象数组
  9. ubantu 软件安装教程汇总(持续更新)
  10. c 连接mysql自动断开_ESQL/C连接和断开数据库(INFORMIX) | 学步园
  11. 2T以上的盘怎么分区, 利用parted创建 linuxTB硬盘GPT分区
  12. 世界之窗浏览器 v 3.6.1.0 [官方最新版]
  13. 如何优雅地过滤敏感词
  14. c语言编写dnf辅助,DNF辅助脚本怎么制作?游戏简易脚本制作教程
  15. 计算机专业面试银行的自我介绍,银行面试自我介绍1分钟
  16. matlab串联矩阵如何表示,MATLAB串联矩阵
  17. 全球及中国车轮强力旋压机行业研究及十四五规划分析报告
  18. 毕业季,作为程序员(it软件开发工程师),如何培养强大的解决问题的能力
  19. 年底买基金的六大建议!
  20. java解压出来损坏_在Java中解压缩错误

热门文章

  1. get方法报空指针_智能指针shared_ptr踩坑笔记
  2. ajax(jquery)前后台传数组(Springmvc后台)
  3. 在ListView中使用BaseAdapter进行适配
  4. 使用Clion开发C语言程序,环境安装配置,保姆级教程
  5. 数据流DataInput(Output)Stream 和 字节数组流 ByteArrayInput(Output) Stream
  6. (转)Fedora 17 安装完全指南
  7. ubuntu mysql 5.7_Ubuntu 18.04 安装mysql5.7
  8. 客户机系统已禁用cpu_Metricbeat System process metricset系统进程监控参数详情
  9. 手把手教你部署一个最小化的 Kubernetes 集群
  10. 盘点2020年10个最难忘的数据泄露事件