array(2) { ["docs"]=> array(10) { [0]=> array(10) { ["id"]=> string(3) "428" ["text"]=> string(77) "Visual Studio 2017 单独启动MSDN帮助(Microsoft Help Viewer)的方法" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(8) "DonetRen" ["tagsname"]=> string(55) "Visual Studio 2017|MSDN帮助|C#程序|.NET|Help Viewer" ["tagsid"]=> string(23) "[401,402,403,"300",404]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400964" ["_id"]=> string(3) "428" } [1]=> array(10) { ["id"]=> string(3) "427" ["text"]=> string(42) "npm -v;报错 cannot find module "wrapp"" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(4) "zzty" ["tagsname"]=> string(50) "node.js|npm|cannot find module "wrapp“|node" ["tagsid"]=> string(19) "[398,"239",399,400]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400760" ["_id"]=> string(3) "427" } [2]=> array(10) { ["id"]=> string(3) "426" ["text"]=> string(54) "说说css中pt、px、em、rem都扮演了什么角色" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(12) "zhengqiaoyin" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400640" ["_id"]=> string(3) "426" } [3]=> array(10) { ["id"]=> string(3) "425" ["text"]=> string(83) "深入学习JS执行--创建执行上下文(变量对象,作用域链,this)" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "Ry-yuan" ["tagsname"]=> string(33) "Javascript|Javascript执行过程" ["tagsid"]=> string(13) "["169","191"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511399901" ["_id"]=> string(3) "425" } [4]=> array(10) { ["id"]=> string(3) "424" ["text"]=> string(30) "C# 排序技术研究与对比" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(9) "vveiliang" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(8) ".Net Dev" ["catesid"]=> string(5) "[199]" ["createtime"]=> string(10) "1511399150" ["_id"]=> string(3) "424" } [5]=> array(10) { ["id"]=> string(3) "423" ["text"]=> string(72) "【算法】小白的算法笔记:快速排序算法的编码和优化" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(9) "penghuwan" ["tagsname"]=> string(6) "算法" ["tagsid"]=> string(7) "["344"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511398109" ["_id"]=> string(3) "423" } [6]=> array(10) { ["id"]=> string(3) "422" ["text"]=> string(64) "JavaScript数据可视化编程学习(二)Flotr2,雷达图" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "chengxs" ["tagsname"]=> string(28) "数据可视化|前端学习" ["tagsid"]=> string(9) "[396,397]" ["catesname"]=> string(18) "前端基本知识" ["catesid"]=> string(5) "[198]" ["createtime"]=> string(10) "1511397800" ["_id"]=> string(3) "422" } [7]=> array(10) { ["id"]=> string(3) "421" ["text"]=> string(36) "C#表达式目录树(Expression)" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(4) "wwym" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(4) ".NET" ["catesid"]=> string(7) "["119"]" ["createtime"]=> string(10) "1511397474" ["_id"]=> string(3) "421" } [8]=> array(10) { ["id"]=> string(3) "420" ["text"]=> string(47) "数据结构 队列_队列实例:事件处理" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "idreamo" ["tagsname"]=> string(40) "C语言|数据结构|队列|事件处理" ["tagsid"]=> string(23) "["246","247","248",395]" ["catesname"]=> string(12) "数据结构" ["catesid"]=> string(7) "["133"]" ["createtime"]=> string(10) "1511397279" ["_id"]=> string(3) "420" } [9]=> array(10) { ["id"]=> string(3) "419" ["text"]=> string(47) "久等了,博客园官方Android客户端发布" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(3) "cmt" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511396549" ["_id"]=> string(3) "419" } } ["count"]=> int(200) } 222 SharpDevelop开发教程(一) - 爱码网

前 言

最近在网上有很多关于SharpDevelop代码分析的文章,但对SharpDevelop插件和核心服务开发的文章确很少。这份文档我想应该会对大家有帮助。为了不浪费大家的时间和网络流量,我不打算给大家讲SharpDevelop的基本概念和内部的代码分析。各位可以参阅清华大学出版的一本红皮书《C#软件项目开发全程剖析-全面透视SharpDevelop软件的开发内幕》(我真的不是清华的书托J),虽然翻译的一般、但有总比没有的好,各位也可以参阅博客园(www.cnblogs.com)另外几位的文章,其中古月春秋的《SharpDevelop代码分析》系列是个人认为写的很不错的,很见作者的功底。(题外话:古月春秋的文章中提到了对codon的翻译的问题,英文中电子、中子、光子、质子分别译为electron neutronphotonproton,此处大家会对-on后缀发出会心的微笑。Codon翻译成“代码子”意思应该是很到位的,清华那本书中的“密码子”就逊色些了,但也还将就。)

这文章大家可以任意阅读转载,但请保持文档的完整转载。由于在工作的中午休息期间所写,十分匆忙,难免有勿,请各位斧正。

为了方便起见,我在文章中都把SharpDevelop简称为SD

 


第一章    Pad

                     Pad(面板)就是SD中的停靠窗口。有这些特点:Pad不能关闭,但可以隐藏或显示。每种类型的Pad只能打开一个,不能在运行时添加,标题唯一。可以显示图标,由SD中的布局管理器负责管理。通常不显示文件内容,而是辅助用户完成任务。

下面进入我们的实战流程,先新建一个类库型的项目,命名为CSPadDemoPlug,把Class1.cs改名为Main.cs,修改为如下内容:

 

 1SharpDevelop开发教程(一)using System;
 2SharpDevelop开发教程(一)using System.Drawing;
 3SharpDevelop开发教程(一)using System.Windows.Forms;
 4SharpDevelop开发教程(一)
 5SharpDevelop开发教程(一)using ICSharpCode.SharpDevelop.Gui;
 6SharpDevelop开发教程(一)
 7SharpDevelop开发教程(一)namespace SDPadDemoPlug
 8

记得要在项目中加入SD中的ICSharpCode.Core.dllSharpDevelop.Base.dll引用。这两个文件在SD下的Bin目录下。写SD的插件需要包含。

 

     在项目中添加新建项à用户控件。改名为CSPadControl各位可以在CSPadControl上添加一些相关的内容。

 

     在工程中添加一个DemoPlug.addin文件,这是插件配置文件,很重要,内容如下:

 

SharpDevelop开发教程(一)<AddIn name        = "SharpDevelop Plug Demo"
SharpDevelop开发教程(一)       author      
= "SongYuanWu"
SharpDevelop开发教程(一)       copyright   
= "GPL"
SharpDevelop开发教程(一)       url         
= "http://www.cnblogs.com/CBuilder"
SharpDevelop开发教程(一)       description 
= "SharpDevelop "
SharpDevelop开发教程(一)       version     
= "1.0.0">
SharpDevelop开发教程(一)    
SharpDevelop开发教程(一)    
<Runtime>
SharpDevelop开发教程(一)        
<Import assembly="SDPadDemo.dll"/>
SharpDevelop开发教程(一)    
</Runtime>
SharpDevelop开发教程(一)
SharpDevelop开发教程(一)    
<Extension path = "/SharpDevelop/Workbench/Views">
SharpDevelop开发教程(一)        
<Class id    = "SDPadDemo" 
SharpDevelop开发教程(一)              class 
= "SDPadDemoPlug.SDPad"/>
SharpDevelop开发教程(一)    
</Extension>
SharpDevelop开发教程(一)
</AddIn> SharpDevelop开发教程(一)
SharpDevelop开发教程(一)

       OK!把编译后的SDPadDemo.dllDemoPlug.addin文件拷贝到SD\AddIns\目录下,运行SD就可以看到我们创建的Pad了(如下图),同时在SD的菜单查看工具下也出现了TestPanel菜单项。
SharpDevelop开发教程(一)

如果需要指定pad的图标时,可以改更改base("TestPanel") base("TestPanel", "IconID")

InconID为图标的资源号,作为演示你可以用Class的图标“Icons.16x16.Class”来替代。

 

要点分析:

       制作Pad的时候要从AbstractPadContent继承。所以要using ICSharpCode.SharpDevelop.Gui;

     .addin文件中不要用中文,否则会出现错误,那如果需要用到中文怎么办呢?可以使用SD的字符串分析服务,把字符串改为如下形式${res:StringID},StringIDSD中的资源IDSDResourceService的使用,我将会在后面的内容中讲述。

相关文章: